3

Visual Studio から Web サイトを実行すると、すべて正常に動作します。今、私は前進してマルチテナンシー部分のテストを開始しようとしているので、Web サイトを IIS に移動する必要がありました。

何らかの理由で、データベースにアクセスできません。データベースへのアクセスが必要なページを開いたときに表示されるエラーは次のとおりです。

ログインで要求されたデータベース「GWD」を開けません。ログインに失敗しました。ユーザー 'IIS APPPOOL\gwd' のログインに失敗しました。

例外の詳細: System.Data.SqlClient.SqlException: ログインによって要求されたデータベース "GWD" を開けません。ログインに失敗しました。ユーザー 'IIS APPPOOL\gwd' のログインに失敗しました。

別のフォーラムでは、 を追加する方法について説明していNT AUTHORITY\NETWORK SERVICEます。しかし、それでは問題は解決しません。を作成し、NT AUTHORITY\NETWORK SERVICE既存のすべてのデータベース (マスターを含む) の dbowner を追加しましたが、結果はありませんでした。

私はアイデアがありません。誰か助けてもらえますか?

4

5 に答える 5

9

NETWORK SERVICEアプリケーション プール IDも同様に変更する必要があります。インターネット インフォメーション サービス (IIS) マネージャーを起動し、[アプリケーション プール] にドリルダウンして、使用しているアプリケーション プールを選択します。(わからない場合は、左側の [サイト] の下にある仮想ディレクトリにドリルダウンし、右側の [基本設定] をクリックします。) 次に、アプリケーション プールをクリックし、[詳細設定] をクリックして、[プロセス モデル] の下の [ID] を [NetworkService] に変更します。

SQL Server Management Studio ではNT AUTHORITY\NETWORK SERVICE、データベースの [セキュリティ] の下にユーザーを追加する必要がありますが、既に行っているようです。

于 2013-02-02T13:23:27.937 に答える
2

「ログインによって要求されたデータベース "GWD" を開けません。ログインに失敗しました。ユーザー 'IIS APPPOOL\gwd..... のログインに失敗しました。」というエラーが表示されます。 applicationName 属性なしで web.config ファイルに追加されました。

プロバイダー宣言に「applicationName」属性を追加することをお勧めします。例:

<membership>
<providers>
<add name ....
.
.
.
.
applicationName="/yourWebApp" />

</providers>
</membership>

開発中にユーザー/データを作成するときに使用されたアプリケーション名を見つけるには、aspnet_Application テーブルを調べてください。

お役に立てば幸いです。

于 2013-02-02T15:55:04.100 に答える
1

@Nicholas Piasecki は 1 つの潜在的な解決策を提供しました。もう 1 つは、アプリ プールをそのままにして、代わりに現在データベースへのアクセスで実行されている AppPoolIdentity を付与することです。

最初に、ユーザー「IIS APPPOOL\gwd」の新しい Windows ログインを SQL Server に追加する必要があります。

これを行うと、Network Service の場合と同様に、そのユーザーを適切な権限でデータベースに追加できるようになります。

于 2013-02-02T13:51:49.827 に答える