8

私たちのアプリケーションはフォーム認証を使用するように構成されており、ほとんどのマシンで問題なく動作しています。しかし、開発者ワークステーションの 1 つで開発環境に問題があります。アプリケーションの URL の 1 つにアクセスすると、次のようになります。

http://iweb.local/reports/

IIS は、次のようにパスワードの入力を求めます。

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 がブラウザーにパスワードの入力を求めるように指示していることを確認しました。しかし、私はその理由を理解することに近づいていません。NegotiateNTLM
  • 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 ファイルには要素がありません。

4

3 に答える 3

10

アプリケーションに "Reports" という名前のフォルダーがあり、SQL Server Reporting Services がサーバーにインストールされている場合、"Reports" という名前の Reporting Services 仮想ディレクトリ フォルダーは、アプリケーションの "Reports" フォルダーと競合します。これを修正するには、Reporting Services 構成マネージャー ([スタート] -> [すべてのプログラム] -> [MS SQL Server] -> [構成ツール] -> [Reporting Services 構成マネージャー]) を開き、仮想ディレクトリを "Reports" から別の名前 ("TestReports") に変更します。左メニューの「Report Manager URL」。

これにより、IIS 認証の問題が解決されます

于 2014-09-09T05:32:20.350 に答える
0

ロケーションバーに about:config と入力し、Enter キーを押します。

about:config 「保証が無効になる可能性があります!」警告ページが表示される場合があります。I'll be care, I promise! をクリックして、about:config ページに進みます。

about:config ページで、設定 network.automatic-ntlm-auth.trusted-uris を検索し、それをダブルクリックします。表示されるプロンプトで、許可するサーバーのリストをコンマとスペースで区切って入力します。たとえば、http://myinternalserverhttp:// anotherinternalserver を許可する場合は、myinternalserver、anotherinternalserver と入力します。OK を押します。

于 2018-10-17T06:29:59.387 に答える
0

フィドラーまたは IE9 の開発ツールを使用して、リクエストを監視します。これにより、ポップアップの原因となっているヘッダーの内容が表示されます。基本認証、またはブラウザーが要求を満たすことができない NT 認証である可能性があります。1 台のマシンにローカライズされているため、IIS が匿名のみに構成されていることを確認し、要求されているファイルのアクセス許可を確認してください。

于 2013-04-07T11:26:18.743 に答える