从asp.net登录控件中删除本地数据库和成员资格提供程序

时间:2012-08-08 06:08:35

标签: asp.net login asp.net-membership local-database

我已经使用Visual Studio默认网站创建了一个Application.it在本地机器上工作正常但是当我在服务器上托管它时iis.it给出了错误

Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'.

在我的数据库中没有这样的sp,我也不想使用成员资格提供者。所以我试图从web.config中删除本地连接,但仍然没有运气。

<remove name="LocalSqlServer" />
        <clear />
        <add name="LocalSqlServer" connectionString="Data Source=GGT\NNY;Initial Catalog=VersionControl;User ID=sa;Password=123" providerName="System.Data.SqlClient"/>


        <add name="ConVersionControl" connectionString="Data Source=GGT\NNY;Initial Catalog=VersionControl;User ID=sa;Password=123" providerName="System.Data.SqlClient"/>
  

ConVersionControl

是我在我的应用程序中使用的连接

以下是我用于登录的代码

protected void LoginButton_Click(object sender, EventArgs e)
    {
        try
        {
            dtUserDetails = new DataTable();
            if (UserRepositoryBL.ValidateUser(LoginUser.UserName.Trim(), LoginUser.Password.Trim(), out dtUserDetails))
            {

                AuthUser au = new AuthUser();
                if (dtUserDetails.Rows.Count > 0)
                {
                    DataRow DR = dtUserDetails.Rows[0];
                    au.UserID = Convert.ToInt32(DR["UserID"].ToString());
                    au.UserNo = DR["UserNo"].ToString();
                    au.UserName = DR["UserName"].ToString();
                    au.Password = DR["Password"].ToString();
                }
                string userData = au.ToString();
                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(

             1,                             // Version number

             LoginUser.UserName.Trim(),      // Username

             DateTime.Now,                  // Issue date

             DateTime.Now.AddMinutes(60), // Expiration date

             false,                         // Persistent?

             userData                 // User data

         );



                string eticket = FormsAuthentication.Encrypt(ticket);

                HttpCookie cookie = new HttpCookie

                     (FormsAuthentication.FormsCookieName, eticket);

                Response.Cookies.Add(cookie);


                BasePage.ActivityLog("User Login", LoginUser.UserName.Trim(), true, Request.RawUrl);
                string url = FormsAuthentication.GetRedirectUrl(LoginUser.UserName, false);

                Response.Redirect(url);



            }
            else
            {
                LoginUser.FailureText = "Your login attempt was not successful. Please try again.";
            }

        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
  

请注意,应用程序正常登录成功。上面   只有当我尝试使用无效的用户名或密码时才会出现错误   登录

1 个答案:

答案 0 :(得分:1)

如果您不想使用ASP.NET成员资格提供程序,则可能是从IIS服务器上的更高级别的web.config或machine.config继承了该提供程序。

尝试在网络配置中清除提供商:

<system.web>
    <membership>
        <providers>
            <clear /> ...

    <roleManager>
        <providers>
            <clear /> ..

如果您确实想使用Membership,那么如果您的本地数据库上不存在aspnet Membership表,procs等,但您的本地环境有效,则很可能在您的本地Dev环境中{{3 },即aspnetdb

配置设置应位于web.config的<membership>

您有两个选择:

  1. 在您的制作环境中移动或创建aspnetdb数据库
  2. aspnetdb表,procs等合并到本地数据库中,然后将其重新部署到生产中。
  3. 您还可以在此处参考如何从头开始将数据库对象重新创建到数据库中: Membership DDL was created in the default database