我有一個網頁(home.aspx)需要Windows身份驗證。如果瀏覽器自動發送有效憑證,則會顯示home.aspx。否則,將顯示login.aspx。ASP.NET。自定義頁面上401
在IE中,我已選中Internet選項>本地內聯網>自定義級別>用戶認證中的「提示輸入用戶名和密碼」複選框。 我遵循http://www.codeproject.com/Articles/11202/Redirecting-to-custom-page-when-quot-Access-de中的步驟,它在我的本地開發服務器上工作正常。但是,在生產服務器上,這是一個不同的故事。
在IIS中,Home.aspx已禁用匿名身份驗證,並啓用了Windows身份驗證。 Login.aspx啓用了匿名身份驗證並禁用了Windows身份驗證。
在開發服務器上,在使用正確憑證登錄的計算機上顯示home.aspx。而且,當瀏覽器沒有發送憑證時,Application_EndRequest將以401狀態碼命中,然後默認的Windows身份驗證提示將顯示。 取消此對話框後,顯示login.aspx。這是正確的行爲。
但是,在生產服務器上,使用正確憑證登錄的計算機上顯示home.aspx。而且,當瀏覽器沒有發送證書時,Application_EndRequest被命中401狀態碼,然後顯示默認的Windows身份驗證提示。取消該對話框後,將顯示默認的401頁面。
是否有人在生產服務器上發生了什麼,以及爲什麼我無法攔截401狀態碼並重定向到自定義網頁。
我沒有示例代碼在我面前作爲示例發佈,但聽起來像您需要允許從web.config或安全設置中匿名訪問login.aspx。否則,如果沒有有效的證書,IIS將不會提供它。 – GalacticCowboy
感謝您的回覆。我啓用了對login.aspx的匿名訪問,並禁用了Windows身份驗證,但仍然遇到同樣的問題。 – user2769810