0

これは、Webサービス(IISでホストされ、ApplicationPoolIdentityで実行されている)がデータベースに接続するために使用する接続文字列です。

<add name="AdventureWorksEntities"connectionString="metadata=.\AdventureWorks.csdl|.\AdventureWorks.ssdl|.\AdventureWorks.msl;
provider=System.Data.SqlClient;provider connection string='Data Source=TestMachine;Initial Catalog=AdventureWorks;
Integrated Security=True;Connection Timeout=60;multipleactiveresultsets=true'" providerName="System.Data.EntityClient" />

サイトにアクセスしようとすると、例外が発生します。ユーザーMyDomain \TestMachine$のログインに失敗しました。

IISがユーザーアカウント(MyDomain \ TestUserなど)ではなくTestMachineを使用して接続しようとしているのはなぜですか?私が信じる理由は、マシンの資格情報を使用するApplicationPoolIdentityの下でホストされているためである可能性があります。

カスタムIDでアプリケーションを実行せずに(つまり、ApplicationPoolIdentityで実行を継続したい)、要求を行ったユーザーのコンテキストを使用するように指定するにはどうすればよいですか?

web.configファイルを設定<identity impersonate = true/>'すると、IISサーバーマシンからローカルでサイトにアクセスでき、データベースへのアクセスは機能しますが、サイトへのリモートアクセスは失敗します。私のWebサービスはWindows認証を使用しています。これについて何か考えはありますか?

4

1 に答える 1

1

IIS で Windows 認証と ASP.NET 偽装を有効にする必要があります。

次に、web.configで

  <system.web>
    <authentication mode="Windows" />
    <identity impersonate="true" />
</system.web>
于 2012-10-31T01:07:55.147 に答える