私たちのアプリケーションはフォーム認証を使用するように構成されており、ほとんどのマシンで問題なく動作しています。しかし、開発者ワークステーションの 1 つで開発環境に問題があります。アプリケーションの URL の 1 つにアクセスすると、次のようになります。
IIS は、次のようにパスワードの入力を求めます。
(この名前iweb.local
は、ホスト ファイルで 127.0.0.1 を指すように設定されています。基本的に、これは localhost のエイリアスです。ホスト ヘッダーを使用するように IIS サイトを構成しているため、将来的に複数のアプリケーションをサポートできる可能性があります。)
http://iweb.local/など、アプリケーション内の他のほとんどの URL にアクセスすると、パスワードの入力を求められません。また、他の開発者マシンでまったく同じコード ベースを使用している場合、パスワードの入力を求められることはありません。問題があるのはこの 1 台のマシンだけです。これにより、これがコーディングの問題ではないことをかなり確信できます。
私が試したこと:
- 別の Web ブラウザーでのテスト。問題が発生しているマシンでは、使用しているブラウザに関係なく問題が発生します。FireFox と IE9 で同じプロンプトが表示されます。
- 他の開発者マシンでのテスト。それらでは問題は発生しません。単一の開発者ボックスでのみ発生します。
- コードとアセットを から にコピー
~/Areas/Reports
し~/Areas/ReportsTest
、適切なリファクタリングを行い、 をロードしhttp://iweb.local/reportstest/
ます。それはうまくいきます。ブラウザはユーザー名とパスワードを要求しなくなりました。ただし、このアプリケーションでは URL を変更することはできません。 - IIS 認証の構成を確認しています。匿名認証とフォーム認証が有効になっています。それ以外はすべて無効になっています。これは、動作するマシンと動作しないマシンを含め、すべての開発者マシンで同じです。
- イベントログを確認しています。IIS はイベント ログに何も記録していません。
- IIS ログを確認しています。ログには、成功したリクエストのエントリが含まれますが (I open の場合など
http://iweb.local
)、ユーザーにパスワードの入力を求めるリクエストについては何もログに記録されません。 - FireBug でリクエスト ヘッダーとレスポンス ヘッダーを確認します。要求ヘッダーは、どちらの URL への要求でも同じように見えます。の応答ヘッダーに
http://iweb.local/reports
は、 と の 2 つのオプションがありWWW-Authenticate
ます。このことから、IIS がブラウザーにパスワードの入力を求めるように指示していることを確認しました。しかし、私はその理由を理解することに近づいていません。Negotiate
NTLM
- IIS をシャットダウンし、World Wide Web Publishing Service のスタートアップの種類を [手動] に設定して自動的に起動しないようにし、コンピューターを再起動します。
http://iweb.local
次に、またはhttp://iweb.local/reports/
がリクエストに応答しているかどうかを確認しました。どちらもそうではなく、リクエストを処理しているのは IIS であることを確認しました。 - IIS を停止し、開発者のハード ドライブからプロジェクト全体を削除し、ソース管理から取得します。ここでの私の考えでは、これはいずれかのフォルダーのアクセス許可の問題である可能性があり (ただし、これが MVC アプリケーションであることを考えると、それがどのように発生するかはわかりません)、このプロセスを実行することで、すべてのフォルダーに正しいアクセス許可が設定されていることが保証されます。パーミッション。しかし、何も変わりませんでした。
- IIS を完全にアンインストールし、コンピューターを再起動して、IIS を再インストールします。これもうまくいきませんでした。
私はアイデアがありません。この 1 つの開発者ボックスには、他の開発者ボックスと同じように構成されていないものは何も見つかりません。
では、IIS がパスワードを要求している理由を把握するために、より深いレベルのログ記録またはトレースを有効にする方法を知っている人はいますか? 私がまだ探していない、これを引き起こしている可能性のある何かを誰かが考えることができますか?
これは、64 ビット環境の IIS 7.5 で実行される ASP.NET MVC 3 アプリケーションです。URLのreports
一部は、MVC エリアとして構成されます。
アップデート
私の Web.config ファイルでは、これが問題のマシンで認証モードが設定されている方法です。
<authentication mode="Forms">
<forms loginUrl="~/account/login" timeout="2880" />
</authentication>
<authentication>
レポート領域の Web.config ファイルには要素がありません。