未呼叫來自 web.config 的自定義錯誤頁面
我已經使用 IIS 錯誤頁面模組為所有非 .NET 頁面設置了自定義錯誤,並且工作正常。
我已將標籤添加到所有 .net 應用程序文件夾的 web.config 文件中。這應該可以處理使用者嘗試在該文件夾中打開 .net (.aspx) 頁面時遇到的任何錯誤。設置似乎很簡單,當我第一次設置它時它就可以工作。現在,在伺服器重新啟動後,它將不再工作。
web.config 文件是:
我還嘗試了 web.config 中的硬編碼路徑。
該文件夾設置為 .net 應用程序文件夾,應用程序池 = ASP.NET v4.0
我可以直接瀏覽到 error.aspx 和 404.aspx 文件,並從瀏覽器視窗成功打開它們。
www.mydomain.com/testingDotNet/404.aspx 和 www.mydomain.com/testingDotNet/error.aspx 將載入正常,沒有錯誤。
但是當我嘗試打開一個不存在的頁面時:
www.mydomain.com//testingDotNet/nopage.aspx ==> 這應該呼叫 404.aspx 但我得到的是 .net 404 頁面:
無法找到該資源。說明:HTTP 404。您要查找的資源(或其依賴項之一)可能已被刪除、名稱已更改或暫時不可用。請查看以下 URL 並確保其拼寫正確。
請求的 URL:/testingDotNet/nopage.aspx
我執行了一個失敗的請求跟踪,但我真的無法從中破譯任何東西。結果,在錯誤顯示之前的程式碼部分是:Failure Reason STATUS_CODE Trigger Status 404 Final Status 404 131. NOTIFY_MODULE_START
ModuleName=“CustomErrorModule”, Notification=“SEND_RESPONSE”, fIsPostNotification=“false”, fIsCompletion=“false”
19:30:02.278
- GENERAL_NOT_SEND_CUSTOM_ERROR
原因 = “SETSTATUS_TRYSKIP”
19:30:02.278
- NOTIFY_MODULE_END
ModuleName=“CustomErrorModule”, Notification=“SEND_RESPONSE”, fIsPostNotificationEvent=“false”, NotificationStatus=“NOTIFICATION_CONTINUE”
19:30:02.278
- i HTTPSYS_CACHEABLE
HttpsysCacheable=“false”, Reason=“NO_PIPELINE_ENABLE”, CachePolicy=“NO_CACHE”, TimeToLive=“0”
19:30:02.278
- i GENERAL_FLUSH_RESPONSE_START
19:30:02.278 136. i GENERAL_RESPONSE_HEADERS
Headers=“Cache-Control: private Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/7.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET”
19:30:02.278
- GENERAL_RESPONSE_ENTITY_BUFFER
Buffer=" 找不到資源。
無論我是遠端呼叫該頁面還是在伺服器本身上呼叫該頁面,我都會得到相同的響應頁面。我希望自定義頁面顯示在來自遠端機器的呼叫中,因為 customerror 模式設置為“RemoteOnly”。但是即使我將模式設置為“關閉”,行為也不會改變。
這似乎是一個非常簡單的任務。奇怪的是,當我第一次配置它時它工作,現在它不會工作。我已經停止並重新啟動了 IIS,並重新啟動了伺服器。這讓我覺得我瘋了!感謝您對為什麼會發生這種情況的任何幫助。
隨著時間的推移,我發現自定義錯誤的所有內容都不起作用,這幾乎總是因為 web.config 文件中的其他內容已關閉。故障排除,嘗試使用 customErrors 集的基本 web.config。那可能會做到。然後開始添加 web.config 的一部分,直到你讓它工作。還要注意根文件夾和子文件夾之間的繼承衝突。