VisualStudio2008 + IIS 「Webサーバーと通信中に認証エラーが発生しました」

環境は Windows Server 2003 R2 x64 + Visual Studio 2008 SP1。ローカルの Administrator アカウントだと動くのに、同じ設定で動かなかったように見えた。

やったことは以下。間違った設定をしていた可能性もあったので、既定の状態に戻す作業も入っている。

  • Webサイトのプロパティ、「開始オプション」タブの 基本URL に指定するURLは localhost で指定する。
  • DefaultAppPool のアプリケーションプールIDを Network Service (既定の状態) に戻す
  • IISの設定 仮想ディレクトリのセキュリティで 統合Windows認証 を有効にする。(これは エラーメッセージのヘルプにある通り)
  • IISの設定 仮想ディレクトリのセキュリティで 匿名アクセスを無効にする。
  • Internet Explorer のオプションで「統合Windows認証 無効
  • Internet Explorer のオプションで「スクリプトのデバッグ 有効」

対象にするアプリケーションは、クッキー制御の都合により localhost では認証が動かないため名前解決をすると 127.0.0.1 になるような a001.example.com のようなWebサイトなので、そのようなURLで開始したかったのだが、「基本URLに指定するURL」については localhost にしておかないとエラーが発生するようだった。

これは、w3wp.exe プロセスを特定するために最初に HTTP DEBUG を投げる際、その時に統合認証が通るようなURLでないといけないという理由と思われる。

「Webサーバーと通信中に認証エラーが発生しました」が発生していた期間のIIS のログを確認すると、以下のような 401.1 エラー または 401.2 エラーが確認できた。

2008-10-15 05:48:09 W3SVC1 127.0.0.1 DEBUG /SampleWebSite/DebugAttach.aspx – 80 – 127.0.0.1 – 401 2 2148074254
2008-10-15 05:48:09 W3SVC1 127.0.0.1 DEBUG /SampleWebSite/DebugAttach.aspx – 80 – 127.0.0.1 – 401 1 0
2008-10-15 05:48:09 W3SVC1 127.0.0.1 DEBUG /SampleWebSite/DebugAttach.aspx – 80 – 127.0.0.1 – 401 1 2148074252
2008-10-15 05:52:41 W3SVC1 127.0.0.1 DEBUG /SampleWebSite/Default.aspx – 80 – 127.0.0.1 – 401 2 2148074254
2008-10-15 05:52:41 W3SVC1 127.0.0.1 DEBUG /SampleWebSite/Default.aspx – 80 – 127.0.0.1 – 401 1 0
2008-10-15 05:52:41 W3SVC1 127.0.0.1 DEBUG /SampleWebSite/Default.aspx – 80 – 127.0.0.1 – 401 1 2148074252

とはいえ、別のマシンでは http://a001.example.com のような基本URLを指定してもデバッグできているので、実際のところ良く分からない。

ちなみに IIS7用であればこの DebugAttach.aspx に対して独自のハンドラを指定する方法が存在している。

 http://mvolo.com/blogs/serverside/archive/2006/12/28/Fix-problems-with-Visual-Studio-F5-debugging-of-ASP.NET-applications-on-IIS7-Vista.aspx

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。