Asp.net

非aspx頁面的404重定向

  • March 15, 2021

我正在使用下面的 web.config 程式碼將對失去頁面的請求重定向到 404 錯誤處理頁面:

<customErrors mode="On" defaultRedirect="404.aspx" redirectMode="ResponseRewrite">
 <error statusCode="404" redirect="404.aspx"/>
</customErrors>

當我查找諸如“missing.aspx”之類的頁面時,它可以正常工作,但它不適用於沒有“.aspx”副檔名的頁面,例如“missing.asp”或只是“missing”。當它不起作用時,它只會載入一個標準的 IIS 7.5 錯誤頁面。

我究竟做錯了什麼?我正在使用.net 4。我注意到其他人問同樣的問題,但他們沒有得到答案。

謝謝!

正如dbaseman所說,這是因為非 asp.net 文件不會呼叫 asp.net 處理程序。強制 asp.net 處理程序對所有請求進行操作的一種簡單方法是在 web.config 中設置以下內容。

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true">
</system.webServer>

這告訴 IIS 為所有請求(例如 .html、.jpg、.css、.js 等)執行所有託管模組。這通常是不受歡迎的,因為它只會引入額外的處理和延遲。

http://www.hanselman.com/blog/BackToBasicsDynamicImageGenerationASPNETControllersRoutingIHttpHandlersAndRunAllManagedModulesForAllRequests.aspx

另一個嘗試的選項(比上面更乾淨)作為答案發佈在這裡:https ://stackoverflow.com/a/6661699/701062

引用自:https://stackoverflow.com/questions/11045733