1

ASP.NET MVC Webサイトを仮想マシン(Hyper-V)上のサーバーに公開しました。同じサーバーにインストールされているSQLServerExpress。

問題は、ASP.Netメンバーシップシステムが統合モードで機能しないことです。Web.configファイルに次のようなレコードが含まれている場合:

   <connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="MyDBConnectionString" connectionString="data source=vm-1\SQLEXPRESS;Initial Catalog=testdb;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
   </connectionStrings>

サイトに登録してログインしようとするとエラーが発生します。

この方法で接続文字列を変更すると、次のようになります。

   <connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="MyDBConnectionString" connectionString="data source=vm-1\SQLEXPRESS;Initial Catalog=testdb;User ID=XX;Password=XXXXXXX;" providerName="System.Data.SqlClient"/>
   </connectionStrings>

登録して問題なくログインできました。

統合セキュリティモードでASP.NETメンバーシップデータベースを使用すると、何が問題を引き起こす可能性がありますか?

4

1 に答える 1

2

偽装を使用しない場合は、ASP.NET プロセスが実行されているアカウントのメンバーシップ オブジェクトへのアクセスを許可する必要があります。おそらくそれはNETWORKSERVICEです。aspnet_regsql.exe を使用してメンバーシップ オブジェクトを作成するaspnet_membership_BasicAccessと、対応する SP に対する実行権限を持つ特別な役割 (など) も作成されます。したがって、NETWORKSERVICEアカウントのログインを作成し、そのログイン用のデータベースにユーザーを追加し、それらのaspnet_ロールの 1 つを彼に付与します。

データベース展開の一部として使用する次のスクリプトを試してください (データベース管理者として実行する必要があります)。

IF NOT EXISTS (SELECT * FROM master.dbo.syslogins WHERE loginname = N'NT AUTHORITY\NETWORK SERVICE')
CREATE LOGIN [NT AUTHORITY\NETWORK SERVICE] FROM WINDOWS
GO
CREATE USER [NT AUTHORITY\NETWORK SERVICE] FOR LOGIN [NT AUTHORITY\NETWORK SERVICE] WITH DEFAULT_SCHEMA=[dbo]
GO
GRANT CONNECT TO [NT AUTHORITY\NETWORK SERVICE]
GO

exec sp_addrolemember 'aspnet_Membership_BasicAccess', 'NT AUTHORITY\NETWORK SERVICE'
GO
exec sp_addrolemember 'aspnet_Roles_BasicAccess', 'NT AUTHORITY\NETWORK SERVICE'
GO
于 2010-05-16T17:31:48.380 に答える