0

Visual Studio の既定の Web サイトを使用してアプリケーションを作成しました。ローカル マシンでは正常に動作していますが、サーバー 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 メンバーシップ プロバイダーを使用したくない場合は、IIS サーバーの上位レベルの web.config または machine.config からプロバイダーを継承している可能性があります。

Web 構成でプロバイダーをクリアしてみてください。

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

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

ただし、メンバーシップを使用したい場合は、ローカル データベースに aspnet メンバーシップ テーブル、プロシージャなどが存在しないが、ローカル環境が機能している場合、ローカル開発環境でメンバーシップ DDL が作成された可能性があります。デフォルトのデータベース、つまりaspnetdb

構成設定は<membership>、web.config にある必要があります。

次の 2 つのオプションがあります。

  1. aspnetdb本番環境でもデータベースを移動または作成します
  2. テーブル、プロシージャなどをローカル データベースにマージしaspnetdbてから、本番環境に再デプロイします。

メンバーシップ オブジェクトを最初からデータベースに再作成する方法については、こちらを参照することもできます: ストアド プロシージャ 'dbo.aspnet_CheckSchemaVersion' が見つかりませんでした

于 2012-08-08T06:20:09.473 に答える