Visual Studio 2010 および Sql Server 2008 を使用してhttp://nuget.org/packages/System.Web.Providersの「ASP.NET Universal Providers 1.2」を使用しようとしています。
すべてが私のローカル開発ボックスで見つかります。ただし、コードを DEV サーバーにデプロイすると、最初に Web サイトにアクセスしたときに次のエラーが表示されます (存在しない場合はデフォルトのロールとデフォルトのメンバーシップ ユーザーを作成するコードがアプリケーションの起動に含まれています)。
「接続名 'LocalSqlServer' がアプリケーション構成で見つからないか、接続文字列が空です。」
SqlMembershipProvider テーブルを作成するための SQL スクリプトを作成しました (プロバイダーがローカルで正しく実行されたときに、一時データベースからリバース エンジニアリングされました)。正しいテーブルがあり、開発ボックスのメインの SQL サーバー インスタンスを使用して問題なく動作します。
リモート DEV サーバーで古いプロバイダーを使用しようとする理由がわかりません。許可エラーだと思います。私の開発ボックスでは、私は管理者であり、統合セキュリティを使用していました。DEV サーバーの場合、SQL Server アカウント (以下の接続文字列を参照) を使用しています。これは、SELECT INSERT UPDATE DELETE として、各 SqlMembershipProvider テーブルにアクセスできます。SQL Server アカウントに必要な権限は他にありますか?
web.config のプロバイダー値は次のとおりです。
<profile defaultProvider="DefaultProfileProvider" enabled="true">
<providers>
<add name="DefaultProfileProvider"
type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
connectionStringName="MasterSqlClientConnectionString" applicationName="PortalDEV"/>
</providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider"
type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
applicationName="PortalDEV" connectionStringName="MasterSqlClientConnectionString" enablePasswordRetrieval="true" enablePasswordReset="true"
requiresQuestionAndAnswer="true" requiresUniqueEmail="true" maxInvalidPasswordAttempts="3" minRequiredPasswordLength="8"
minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordFormat="Encrypted"/>
</providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider" enabled="true" cacheRolesInCookie="false" cookiePath="/" cookieProtection="All" cookieRequireSSL="true"
cookieSlidingExpiration="true" cookieTimeout="16" maxCachedResults="25">
<providers>
<add name="DefaultRoleProvider"
type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
connectionStringName="MasterSqlClientConnectionString" applicationName="PortalDEV"/>
</providers>
</roleManager>
<sessionState mode="InProc" customProvider="DefaultSessionProvider" compressionEnabled="true" timeout="16">
<providers>
<add name="DefaultSessionProvider"
type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</providers>
</sessionState>
そして、これが私の接続文字列です(データがマスクされています):
何か案は?