IIS 7.5 提示輸入使用者名和密碼
我們的應用程序配置為使用表單身份驗證,並且在大多數機器上執行良好。但是,我在我們的一個開發人員工作站上的開發環境存在問題。當我轉到應用程序的 URL 之一時,如下所示:
IIS 提示我輸入密碼,如下所示:
(該名稱
iweb.local在 hosts 文件中設置為指向 127.0.0.1。本質上它是 localhost 的別名。我們將 IIS 站點配置為使用主機標頭,因此我們將來可能支持多個應用程序。)如果我訪問應用程序中的大多數其他 URL,例如http://iweb.local/ ,系統不會提示我輸入密碼。並且在任何其他開發人員機器上使用完全相同的程式碼庫時,都不會提示我輸入密碼。只有這台機器有問題。這使我有理由相信這不是編碼問題。
我嘗試過的事情:
- 使用不同的 Web 瀏覽器進行測試。在出現問題的機器上,無論我使用什麼瀏覽器都會出現問題。我在 FireFox 和 IE9 中得到相同的提示。
- 在其他開發人員機器上進行測試。這些問題不會發生。它只發生在單個開發人員框中。
- 將程式碼和資產從 複製
~/Areas/Reports到~/Areas/ReportsTest中,並進行適當的重構,然後載入http://iweb.local/reportstest/. 這樣可行; 瀏覽器不再提示輸入使用者名和密碼。但是,更改 URL 不是我們的應用程序的選項。- 檢查 IIS 身份驗證配置。啟用匿名身份驗證和表單身份驗證。其他一切都被禁用。這在所有開發人員機器上都是相同的,包括可以工作的機器和不能工作的機器。
- 檢查事件日誌。IIS 沒有將任何內容記錄到事件日誌中。
- 檢查 IIS 日誌。日誌包含成功請求的條目(例如當我打開時
http://iweb.local),但它不會記錄任何提示使用者輸入密碼的請求的任何內容。- 使用 FireBug 檢查請求和響應標頭。對於對任一 URL 的請求,請求標頭似乎相同。的響應標頭
http://iweb.local/reports有WWW-Authenticate:Negotiate和NTLM. 由此,我已經確認 IIS 正在引導瀏覽器提示輸入密碼。但我並沒有更接近理解為什麼。- 關閉 IIS,將全球資訊網發布服務設置為手動啟動類型,使其不會自動啟動,然後重新啟動電腦。然後我檢查是否有任何請求
http://iweb.local或http://iweb.local/reports/正在響應請求。兩者都不是,確認是 IIS 正在處理請求。- 停止 IIS,從開發人員的硬碟中刪除整個項目,然後從原始碼管理中檢索它。我的想法是,這可能是其中一個文件夾的權限問題(儘管我不明白這是怎麼回事,因為這是一個 MVC 應用程序)並且通過此過程將確保所有文件夾都具有正確的權限。但這並沒有改變什麼。
- 完全解除安裝IIS,重啟電腦,重新安裝IIS。這也不起作用。
我沒主意了。我在這個開發人員框中找不到與其他開發人員框配置不同的任何內容。
那麼:有沒有人知道一種方法可以啟用更深層次的日誌記錄或跟踪以找出 IIS 要求輸入密碼的原因?誰能想到任何可能導致我尚未尋找的原因?
這是一個在 64 位環境中的 IIS 7.5 上執行的 ASP.NET MVC 3 應用程序。URL的
reports一部分被配置為 MVC 區域。更新
在我的 Web.config 文件中,這是在違規機器上設置身份驗證模式的方式。
<authentication mode="Forms"> <forms loginUrl="~/account/login" timeout="2880" /> </authentication>報告區域的 Web.config 文件中沒有
<authentication>元素。
如果應用程序中有一個名為“Reports”的文件夾,並且伺服器上安裝了 SQL Server Reporting Services,則同樣名為“Reports”的 Reporting Services 虛擬目錄文件夾將與應用程序“Reports”文件夾發生衝突。要解決此問題,請打開 Reporting Services 配置管理器(開始->所有程序->MS SQL Server->配置工具-> Reporting Services 配置管理器)並將虛擬目錄從“Reports”更改為任何其他名稱(“TestReports”)左側菜單中的“報表管理器 URL”。
這將解決 IIS 身份驗證問題
