1

ASP.NET MVC4 アプリでメンバーシップを設定しているので、ソリューションを開き、そこから [プロジェクト] メニューの [ASP.NET 構成] Web サイト オプションを開きます。これにより、ASP.NET 構成ツールが開き、ユーザーを作成/変更/削除できます。私が見つけたのは、ユーザーを作成すると、Webホスティング会社でホストされている別のデータベースを指すようにweb.configで具体的に設定すると、ローカルデータベースにユーザーが作成されることです。machine.config で定義され<remove name="LocalSqlServer" />ている接続を削除します。

私のアプリの web.config の接続文字列は次のとおりです。

<remove name="LocalSqlServer" />
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=cp.speedwell.arvixe.com; Initial Catalog=*********; User ID=********; Password=********;" />

これが、私の Web ホスティング会社のデータベース構造です。ご覧のとおり、aspnet_ テーブルはすべて作成済みです。

ここに画像の説明を入力

[ASP.NET 構成] タブで [プロバイダー] をクリックすると、次のプロバイダーのリストが表示されます。

ここに画像の説明を入力

DefaultMembershipProvider は、Web ホスティング会社でホストされているデータベースへの接続文字列である「DefaultConnection」を指しています。「テスト」をクリックすると、すぐに次のように表示されます。

ここに画像の説明を入力

最後に、[セキュリティ] をクリックすると、次のメッセージが表示されます (接続文字列から LocalSqlServer を削除したことに注意してください)。

ここに画像の説明を入力

私が間違っていることはありますか?

アップデート

web.config の Membership、Profile、RoleManager、および SessionState セクションは次のとおりです。

<profile defaultProvider="DefaultProfileProvider">
  <providers>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add connectionStringName="DefaultConnection" enablePasswordRetrieval="false"
      enablePasswordReset="true" requiresQuestionAndAnswer="false"
      requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
      applicationName="/" name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
  <providers>
    <add connectionStringName="DefaultConnection" applicationName="/"
      name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</roleManager>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
  </providers>
</sessionState>
4

4 に答える 4

2

Web.config で、これを置き換えるだけで、

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>

これとともに、

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>
于 2013-05-29T11:26:57.337 に答える
1

DefaultConnectionを削除する代わりにLocalSqlServerを削除する必要はありません。

<remove name="DefaultConnection" />
<add name="DefaultConnection" providerName="System.Data.SqlClient" .../>

さらに、新しいASP.Net Universal Providersaspnet_regsql.exeを使用する場合、非推奨のテーブルを生成するために使用する必要はありません。

ASP.Net Universal Providersエンティティ フレームワークを使用します。

データベースが新しい (既存のデータがない) 場合、そのデータベースを削除し、ASP.Net ユニバーサル プロバイダーを使用してテーブルを作成することをお勧めします (aspnet_regsql.exe を使用する必要はありません)。

<clear/>タグ内に の前に置きaddます。

<profile defaultProvider="DefaultProfileProvider">
  <providers>
    <clear/>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <clear/>
    <add connectionStringName="DefaultConnection" enablePasswordRetrieval="false"
      enablePasswordReset="true" requiresQuestionAndAnswer="false"
      requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
      applicationName="/" name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
  <providers>
    <clear/>
    <add connectionStringName="DefaultConnection" applicationName="/"
      name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</roleManager>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
  <providers>
    <clear/>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
  </providers>
</sessionState>
于 2013-04-05T02:22:49.027 に答える
0

結局のところ、私のユーザー/ロール/その他は、実際にはずっと正しいデータベースに挿入されていました-予想どおり、aspnet_Usersテーブルではなく、ユーザーテーブルに挿入されていました。これは、私のアプリが asp.net ユニバーサル プロバイダーを使用するように構成されているためです。

私は MYWSAT を使用しており、古い aspnet テーブルが必要なので、ユニバーサル プロバイダーを削除したところ、その問題は解消されました。データベースへの接続を確立できなかったというメッセージが表示されたのは、まさにこのためでした。

于 2013-04-05T02:22:35.743 に答える
0

あなたのweb.configは、connectionStringNameを介してメンバーシップの接続文字列を次のように指していますか?

<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="NameOfConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />

または、ビルド構成の問題が発生している可能性がありますか? アップロードされた構成ファイルが正しい場所を指していることを確認しましたか?

また、メンバーシップの宣言の前に clear を追加してみてください。

<membership defaultProvider="DefaultMembershipProvider">
<providers>
 <clear />    
<add name="DefaultMembershipProvider" ...
于 2013-04-04T21:39:13.087 に答える