redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

IISのApplicationPollIdentityとWindows認証によるDBアクセスで発生したエラー

新年あけましておめでとうございます。今年もよろしくお願いします。

さて、ASP.NET MVC の権限関係では、いくつか記事を書いた。

redwarrior.hateblo.jp

redwarrior.hateblo.jp

上記を参考にすれば、躓かずに構築できると思ってたが、あまり見たことのないエラーに遭遇したのでエラー内容と解決策を記録しておく。

実行環境(ただし、今回はあまりバージョンは関係ないと思う)

設定や前提条件

  • IIS上に複数サイトを作成して、ドメイン名によってサイトへの振り分けを行っている
  • サイトではなくアプリケーションで、Windows認証を有効にしている
  • アプリケーションプールはApplicationPollIdentityを使用。アプリケーションプールユーザにDBアクセスの許可を設定している
  • アプリケーションからDBへのアクセスは、Windows認証

遭遇したエラーメッセージ

System.Data.Entity.Core.EntityException: 基になるプロバイダーが Open で失敗しました。 ---> System.Data.SqlClient.SqlException: ログインできませんでした。このログインは信頼されていないドメインからのログインなので、統合認証では使用できません。

あまり見たことが無いエラーなので、DBアクセス許可の設定をやり直したり、Windows Serverの再起動をしてもらったりしたが、変化なし。
エラーメッセージで検索しても、めぼしい情報は見つからず。
落ち着いて考えるとメッセージは、(権限による)アクセス許可の問題ではないと思いたち、今までと違う所を探した。

そうすると、DBの接続文字列が違っていた。今まではサーバー名を設定していたが、今回はDNSに設定したドメイン名を使用していた。接続文字列をサーバ名に戻すと、エラーが発生しなくなった。

対処方法

Data Sourceにサーバー名を指定する。

以上。