2

「asp.net メンバーシップ プロバイダー」は移植可能ですか? 新しいマシンごとに aspnet_regsql.exe を実行してセットアップする必要がありますか?

メンバーシップ プロバイダー データベースを Visual Studio Database Edition にインポートし、ソース管理にチェックインして、別の開発マシンに再デプロイしました。新しいマシンから、次のエラーが発生しました。これを修正するにはどうすればよいですか? ありがとう!

'System.Web.Security.SqlMembershipProvider' には、スキーマ バージョン '1' と互換性のあるデータベース スキーマが必要です。ただし、現在のデータベース スキーマはこのバージョンと互換性がありません。aspnet_regsql.exe (フレームワークのインストール ディレクトリにある) を使用して互換性のあるスキーマをインストールするか、プロバイダーを新しいバージョンにアップグレードする必要がある場合があります。

4

3 に答える 3

3

新しい開発環境に Framework 2.0 以降があり、スキーマを含む DB にアクセスできる限り、「移植可能」です。

aspnet_regsql.exe アプリケーションは、db スキーマの生成専用です。プロバイダーを指定するとき、本当の取引は web.config で行われます。

接続文字列またはメンバーシップ プロバイダー スキーマを含む DB に .mdf ファイル参照がある限り、すべて正常に動作するはずです。

接続文字列:

<connectionStrings>
        <add name="LocalSQL" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=YourCatalog;Persist Security Info=True;User=sa;Password=password" providerName="System.Data.SqlClient"/>        
    </connectionStrings>

メンバーシップ プロバイダー:

<membership defaultProvider="DefaultProvider" userIsOnlineTimeWindow="30">
            <providers>
                <clear/>
                <add name="DefaultProvider" connectionStringName="LocalSQL" applicationName="DefaultApp" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="true" passwordFormat="Encrypted" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            </providers>
        </membership>
于 2009-03-22T04:14:27.213 に答える
0

SQL メンバーシップ プロバイダーは、すべてのデータベースに必要です。プロバイダー登録プロセスでは、データベース内に特定のテーブルが作成されます。これらのテーブルが存在しない場合、上記のエラーが発生します。

テーブルはデータベース内に作成されるため、単一の SQL データベースを共有したいだけの数の異なるアプリケーションまたは開発マシンを持つことができます。

ただし、別のプロバイダー インスタンスが必要な場合は、別のアプリケーションを持っているか、別の SQL データベースと通信する必要があるため、再度登録 (テーブルを作成) する必要があります。もう 1 つの可能性は、SQL レプリケーションを使用して、あるデータベースから別のデータベースにテーブルをコピーすることです。

おそらく、アプリケーションで web.config ファイルを変更して、既存の SQL データベースへの正しい接続文字列が含まれるようにする必要があります。

于 2009-03-22T04:15:37.583 に答える
0

私もこの問題を抱えていました。私の場合、アプリケーションに明示的に名前を付ける必要がありました (私の開発マシンでは "/" でした)。

web.config:

<membership>
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" applicationName="jobs"... />
  </providers>
</membership>
<profile>
  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" applicationName="jobs" ... />
  </providers>
</profile>
<roleManager enabled="true">
  <providers>
    <clear />
    <add connectionStringName="ApplicationServices" applicationName="jobs" ... />
    <add applicationName="jobs" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>

そして、私のデータベースで:

INSERT INTO [dbo].[aspnet_Applications]([ApplicationName], [LoweredApplicationName], [ApplicationId], [Description]) SELECT N'jobs', N'jobs', N'74b045ce-9c16-4e6a-b1ec-08504600a627', NULL
于 2011-01-18T17:57:54.203 に答える