2009-08-28 16 views
4

私はSQLServer2005とVS2008を使用しています。 web.config内の接続文字列は次のとおりです。Web.config認証エラー

add name="library" connectionString="Data source=KMT; Initial Catalog=Library;Integrated Security=SSPI" 

ここで、KMTは私のサーバ名、Libraryは私のデータベースです。

VS2008 localhostでページを実行しても問題ありません。しかし、IISを介して見ると、「KMT/ASP.NET」というユーザーのログインに失敗したようなエラーメッセージが表示されます。私のsqlserver認証モードはWindowsで、web.configではOKです。解決策は何ですか?

答えて

2

私の友人の一人は、この問題を解決するために私を助けました'MACHINE \ ASPNET'、N'Database ' 使用データベース EXEC sp_grantdbaccessストアドプロシージャN'MACHINE \ ASPNET'、N'ASPNET ' EXEC sp_addrolemember N'db_owner'、N'ASPNET」

ここMACHINEは、マシン名とデータベースです私のデータベース名です。 しかし、これを通じてASPNETユーザーは、そのデータベースに対して合計で の制御権を持っています。

2

「統合セキュリティ」を使用するとは、プロセスを実行しているユーザーのIDを使用してデータベースにログインすることです。ローカルVS Webサーバーを実行すると、ログインとして実行されます。しかし、IISでは、Webサーバーワーカープロセスは事前定義されたユーザーアカウントとして実行されます。 ワーカープロセスIDには、SQL Serverおよびデータベースに対する権限が必要です。

IISでアプリケーションプールのプロパティを確認します。たとえば、ネットワークサービスとして実行している場合は、SQLに入り、新しいユーザーを作成し、Windowsユーザー名としてNetwork Serviceを入力し、そのユーザーの権限をデータベースに与えます。

0

VS2008は、あなたの資格情報を使用してdbに認証するため、IISは別のアカウントを使用しています。 IISアカウントに十分な権限があることを確認してください。

0

Integrated Security = SSPIを使用すると、現在のユーザーの資格情報(VSの場合はYOU)がSQL Serverへの接続に使用されます。 、IISサービスに関連付けられているユーザーがログインするために使用されているIISのアプリから

ソリューション:。

  • IISサービスにSQL

  • に接続できるの特別なユーザーを割り当てます
  • データベースにアクセスするためにSQL Serverの認証を使用し、接続文字列に格納されたユーザー名/パスワードを使用します。

0

ASP.NETシステムアカウントまたはユーザーのWindowsアカウントを使用する予定がありましたか?

後者の場合はimpersonationが必要です。これはSQLとIISが同じマシン上にある場合に機能します。それ以外の場合は、ダブルホップであり、委任を設定するために必要な作業は少なくありません。私は

のexec sp_grantloginをN'MACHINE \ ASPNET」 EXEC sp_defaultdb N私のDBとセットアップDA権限を するログインとしてASPNETを追加するためにSQLを実行し として

0

サーバーがWindows 2003の場合、ネットワークサービスにSQL Serverへのアクセス許可を与えることができます