2009-09-12 46 views
3

我有一個asp.net應用程序。當我打開應用程序時,我得到了一個運行時異常,其描述如下:「在執行當前網頁期間發生未處理的異常請查看堆棧跟蹤以獲取關於錯誤的更多信息以及源代碼的來源。「如何避免asp.net應用程序中的運行時錯誤頁面

當過我得到這種運行時異常的,我想頁面重定向到一些其他的aspx page.I已在web.config文件中添加自定義錯誤標記爲:

<customErrors 
    mode="RemoteOnly" 
    defaultRedirect="~/Error.aspx" /> 

但仍m到處運行時錯誤頁面而不是錯誤頁面。

回答

0

確保您的customErrors模式處於開啓狀態,而不是關閉或RemoteOnly。後面的選項似乎是默認的,但只有在本地進行頁面請求時纔有效。

0

RemoteOnly指定自定義錯誤僅顯示給遠程客戶端,並且ASP.NET錯誤顯示給本地主機(從msdn)。
你在開發機器上看到這些錯誤嗎?如果是這樣,那麼這是正確的行爲,你可以嘗試customErrors =「off」。

4

如您所知,選項爲On,Off和RemoteOnly。

  • 僅限遠程意味着,如果你在本地瀏覽,您將無法獲得自定義錯誤頁;您將獲得ASP.NET的內置異常頁面。如果您正在遠程瀏覽(IE,而不是在應用程序所在的物理機器上),那麼您將看到Error.aspx。我幾乎從不使用這個設置了。
  • 表示無論如何,如果出現錯誤,您將看到Error.aspx。我傾向於在生產環境中使用「開」。
  • 關閉意味着無論如何,你會看到ASP.NET的內置錯誤頁面(異常頁面)。關閉不推薦用於生產,但通常是我在測試服務器上使用的,因爲我想要我的堆棧跟蹤。 :)

所有這一切都是基於Error.aspx,當然不會拋出自己的異常。如果Error.aspx拋出自己的未處理的異常,那麼所有的賭注都關閉 - 你將得到一個默認的ASP.NET異常頁面。

0

在我的Global.asax文件中設置Application_Error事件處理程序,並且我已經實現了服務器傳輸錯誤。現在我想設置一個特定的頁面來處理404錯誤。如何檢測404錯誤並調用404特定的頁面?

該問題的主要答案涉及檢索首先觸發事件的異常。要做到這一點,我們調用Server.GetLastError():

我們下一步需要做的是確定是否異常是一個HttpException或別的東西。一旦我們確定它是一個HttpException,我們就可以訪問特定於Http的屬性和方法,這些屬性和方法會給我們提供我們正在尋找的其他信息。在我們的例子中,我們要調用GetHttpCode()方法,它將返回Http狀態碼並將其與404號碼進行比較。

空隙的Application_Error(對象發件人,EventArgs的)

{

Exception ex = Server.GetLastError(); 

if (ex is HttpException) 

{ 

    if (((HttpException)(ex)).GetHttpCode() == 404) 

     Server.Transfer("~/Error404.aspx"); 

} 

// Code that runs when an unhandled error occurs 

Server.Transfer("~/DefaultError.aspx"); 

}

相關問題