Asp.net

ASP.NET / Web.config:customErrors 僅在 404 上重定向

  • August 9, 2020

我有這種情況:

一個使用者來到我的網站並點擊一個不再存在的連結,他應該被重定向到一個自定義錯誤頁面。(這樣可行)

如果使用者做了某事引發了錯誤,他應該會看到 Stacktrace 和真正的 Errorpage。

這是我目前的 Web.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <system.web>
       <customErrors>
         <error statusCode="404" redirect="/errors/404.htm" />
       </customErrors>
       <compilation debug="true" strict="false" explicit="true" />
   </system.web>
</configuration>

使用此配置,404 將被重定向到正確的站點,但 HTTP 500 將顯示如下:

“/”應用程序中的伺服器錯誤

說明:伺服器上發生應用程序錯誤。此應用程序的目前自定義錯誤設置可防止遠端查看應用程序錯誤的詳細資訊(出於安全原因)。但是,它可以被本地伺服器機器上執行的瀏覽器查看。

詳細資訊:要在遠端電腦上查看此特定錯誤消息的詳細資訊,請在位於目前 Web 應用程序根目錄的“web [.config”配置文件中創建一個標籤。然後,此標記應將其“模式”屬性設置為“關閉”。

$$ … $$

但在這種情況下,我想顯示堆棧跟踪。

我怎樣才能做到這一點?

**注意:**我們在 Linux 上使用 Mono <- FastCGI -> Lighttpd 結構。

Ray Van Halens 答案是正確的,但這不是實際問題。

不顯示堆棧跟踪的原因是單聲道本身的錯誤。沒有其他方法可以編寫一個自己的錯誤頁面來顯示堆棧跟踪。

在以下 web.config 條目中,未找到 (404) 條件會將使用者發送到 PageNotFound.aspx

使用 mode=“Off” 並且每個人(本地和遠端使用者)都會看到錯誤詳細資訊。

&lt;customErrors mode="Off"&gt;
    &lt;error statusCode="404" redirect="~/errorPages/PageNotFound.aspx" /&gt;
&lt;/customErrors&gt;

使用 mode=“RemoteOnly” 並且本地使用者將看到帶有堆棧跟踪和編譯詳細資訊的詳細錯誤頁面。向遠端使用者顯示 GeneralError.aspx 頁面

&lt;customErrors mode="RemoteOnly" defaultRedirect="~/errorPages/GeneralError.aspx"&gt;
    &lt;error statusCode="404" redirect="~/errorPages/PageNotFound.aspx" /&gt;
&lt;/customErrors&gt;

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