0

我已经使用 Visual Studio 默认网站创建了一个应用程序。它在本地机器上运行良好,但是当我将它托管在服务器 iis 上时。它给出了错误

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"/>

转换控制

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

以下是我用于登录的代码

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;
        }
    }

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

4

1 回答 1

1

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

尝试在您的网络配置中清除提供程序:

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

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

ETC

但是,如果您确实想使用 Membership,那么如果您的本地数据库中不存在 aspnet Membership 表、procs 等,但您的本地环境可以正常工作,则很可能在您的本地 Dev 环境中创建了 Membership DDL默认数据库,即aspnetdb

配置设置应该在<membership>您的 web.config 中。

您有 2 个选项:

  1. aspnetdb在生产环境中移动或创建数据库
  2. aspnetdb表、过程等合并到本地数据库中,然后将其重新部署到生产环境中。

您还可以在此处参考如何从头开始将成员资格对象重新创建到数据库中: 找不到存储过程“dbo.aspnet_CheckSchemaVersion”

于 2012-08-08T06:20:09.473 回答