IISのApplicationPollIdentityとWindows認証によるDBアクセスで発生したエラー
新年あけましておめでとうございます。今年もよろしくお願いします。
さて、ASP.NET MVC の権限関係では、いくつか記事を書いた。
上記を参考にすれば、躓かずに構築できると思ってたが、あまり見たことのないエラーに遭遇したのでエラー内容と解決策を記録しておく。
実行環境(ただし、今回はあまりバージョンは関係ないと思う)
- Windows Server 2016
- IIS 10
- SQL Server 2017(IISと同一サーバにインストール)
- ASP.NET MVC 5.2.3
- Entity Framework 6.1.3
設定や前提条件
- IIS上に複数サイトを作成して、ドメイン名によってサイトへの振り分けを行っている
- サイトではなくアプリケーションで、Windows認証を有効にしている
- アプリケーションプールはApplicationPollIdentityを使用。アプリケーションプールユーザにDBアクセスの許可を設定している
- アプリケーションからDBへのアクセスは、Windows認証
遭遇したエラーメッセージ
System.Data.Entity.Core.EntityException: 基になるプロバイダーが Open で失敗しました。 ---> System.Data.SqlClient.SqlException: ログインできませんでした。このログインは信頼されていないドメインからのログインなので、統合認証では使用できません。
あまり見たことが無いエラーなので、DBアクセス許可の設定をやり直したり、Windows Serverの再起動をしてもらったりしたが、変化なし。
エラーメッセージで検索しても、めぼしい情報は見つからず。
落ち着いて考えるとメッセージは、(権限による)アクセス許可の問題ではないと思いたち、今までと違う所を探した。
そうすると、DBの接続文字列が違っていた。今まではサーバー名を設定していたが、今回はDNSに設定したドメイン名を使用していた。接続文字列をサーバ名に戻すと、エラーが発生しなくなった。
対処方法
Data Sourceにサーバー名を指定する。
以上。