1

プログラムで新しいユーザーを作成し(後でカスタムプロファイルを追加する予定です)、Win2K8VMで作業しています。

MembershipUser newUser = 
    Membership.CreateUser(userNameTxt.Text, passwordTxt.Text, emailTxt.Text);
Roles.AddUserToRole(userNameTxt.Text.Trim(), "Member");

アップデート:

接続文字列:

<remove name="LocalSqlServer" />
<add name="LocalSqlServer" 
    connectionString="Initial Catalog=MYS;Data Source=WIN2K8;uid=MYS;password=xxxxxx;"   
    providerName="System.Data.SqlClient" />

次のエラーが発生します。

System.Data.SqlClient.SqlException:ユーザー'IIS APPPOOL\MYAPP'のログインに失敗しました。

<membership>
      <providers>
        <remove name="DefaultMembershipProvider"/>
        <add 
            name="DefaultMembershipProvider" 
            type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
            connectionStringName="LocalSqlServer" 
            enablePasswordRetrieval="false" 
            enablePasswordReset="false" 
            requiresQuestionAndAnswer="false" 
            requiresUniqueEmail="false" 
            minRequiredPasswordLength="6" 
            minRequiredNonalphanumericCharacters="1" 
            passwordAttemptWindow="10" 
            applicationName="/" />
            </providers>
    </membership>
    <roleManager enabled="true">
4

4 に答える 4

1

System.Data.SqlClient.SqlException:ユーザー'IIS APPPOOL\MYAPP'のログインに失敗しました。

これは、アプリケーションプールIDが仮想アカウント'IIS APPPOOL\MYAPP'であることを示しています。

このIDのSQLServerログインを作成し、適切な権限を持つユーザーとしてメンバーシップデータベースに追加する必要があります。

「このID」のSQLServerログインを作成する意味がわかりません...

1つの方法は、SQL ServerManagementStudioを使用することです。「オブジェクトエクスプローラー」をSQLServerインスタンスに接続し、「セキュリティ/ログイン」を右クリックして「新規ログイン」を選択し、ログイン名IIS APPPOOL \ MYAPP withWindowsAuthenticationを追加します。

次に、このログインをメンバーシップデータベースのユーザーにマップします。

于 2012-10-14T12:56:54.280 に答える
1

現在の接続文字列は次のとおりです。

<connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="LocalSqlServer" 
    connectionString="Initial Catalog=MYS;Data Source=WIN2K8;Integrated Security=SSPI;"
    providerName="System.Data.SqlClient" />
</connectionStrings>

ここでのエラーは、次のように言っていることです。SQLサーバーデータベースに接続し、AppPoolIDを「アカウント」として使用してSQLサーバーデータベースを認証します。

IIS上のすべてのWebサイトは、「アカウント」で実行されます。この場合、このアカウントはと呼ばれているように見えますMyApp

したがって、修正には、次のような接続文字列が必要です。このIISマシンなどで設定されている「ID」は使用しないでください。ただし、代わりに、このハードコードされたユーザー名/パスワードを使用してください。

今、これをチェックしてください:

<connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="LocalSqlServer" 
    connectionString="Initial Catalog=MYS;Data Source=WIN2K8;uid=username;password=pass;"
    providerName="System.Data.SqlClient" />
</connectionStrings>

メモを取る:

  1. 私は引数を削除しました:Integrated Security=SSPI;
  2. 引数を追加しました:uid=username;
  3. 引数を追加しました:password=pass;

username値とpass、SQLServerデータベースへのログインに使用するユーザー名/パスワードを置き換えるだけです。

単一の接続文字列で定義できるオプション/キーワードについて学習するのに助けが必要ですか?このConnectionStringsサイトを参照として確認してください

プロのヒント:代わりに<remove name="whatever/>..を使用してみてください<clear/>

例えば。

<connectionStrings>
    <clear/>
    <add name="LocalSqlServer" connectionString="Initial Catalog=MYS;Data Source=WIN2K8;uid=username;password=pass;" providerName="System.Data.SqlClient" />
</connectionStrings>

GL!

于 2012-10-14T13:35:33.390 に答える
0

接続文字列を確認してください。次のようになります。

Server=.\SQLEXPRESS;Database=MyDatabase;Integrated Security=SSPI;

変更されたエラーについて:

次のように、 enableEventValidationをfalseに設定し、 viewStateEncryptionModeをNeverに設定します。

<pages enableeventvalidation="false" viewstateencryptionmode="Never">
于 2012-10-14T12:25:25.850 に答える
0

このリンクごとに、aspnet_SchemaVersionsテーブルにデータを入力することで、接続の問題を解決できました。

ASP.NETメンバーシップエラー

その後、ローカルに接続することができました。

<remove name="LocalSqlServer" />
    <add name="LocalSqlServer" 
    connectionString="Initial Catalog=MYS;Data Source=WIN2K8;Integrated Security=SSPI;"
    providerName="System.Data.SqlClient" />
于 2012-10-14T22:01:18.710 に答える