2008-10-21 36 views
3

我們組的傳統ASP 3.0 Web應用程序可以通過在IIS的「自定義錯誤」選項卡中設置自定義錯誤文件來利用全局錯誤文件。我無法找到類似的ASP.NET應用程序解決方案。ASP.NET和IIS6:捕獲所有應用程序錯誤

有誰知道是否有一種方法可以讓一個集中的「Error.aspx」頁面(例如)爲整個應用程序池捕獲錯誤?目標是避免添加自定義代碼到每個應用程序的全局錯誤處理程序....

任何指導非常感謝!

回答

1

您可以將<customErrors defaultRedirect="[url]"></customErrors>標記添加到您的web.config中,甚至可以添加到machine.config中以重定向到自定義錯誤頁面。自定義錯誤標籤還支持可用於定義自定義錯誤的多個子元素。

只要記住編輯machine.config文件時,它會影響該機器上的所有應用程序。

+0

@SaaS:感謝您的迴應!它基本上是在使用時做一個Response.Redirect,對吧?如果是這樣,服務器錯誤信息在加載錯誤頁面時不會被轉儲? – deadbug 2008-10-21 06:21:20

1

檢出global.asax.cs文件的Application_Error方法。

您可以通過使用像得到錯誤的詳細信息中的位置:

Exception myError = Server.GetLastError(); 
Exception baseException = myError.GetBaseException(); 
0

您的還利用Application_OnError事件在Global.asax文件捕獲錯誤。然後,你可以像Ben R所說的那樣做。通過Server.GetLastError()例程捕獲錯誤。

0

您還可以構建一個名爲「ErrorHandlingModule」的自定義模塊,該模塊將進入HttpModule。

public class ErrorHandlingModule : IHttpModule 
{ 
    public void Init(HttpApplication application) 
    { 
     application.Error += new System.EventHandler(OnError); 
    } 

    public void OnError(object obj, EventArgs args) 
    { 
     Exception ex = HttpContext.Current.Server.GetLastError(); 
     //Log your error here or pick a funny message to display 
     HttpContext.Current.Server.ClearError(); 
     HttpContext.Current.Response.Redirect("/Error.aspx", false); 
    } 
} 

它看起來像這樣。

1

我們已經使用ELMAH來做你正在問的東西。你可以把它在機器級別上工作,所以你不必設置自定義錯誤處理對每個網站:

http://code.google.com/p/elmah/

你還可以再納入<的customErrors在你的web.config >標籤以確保它們被重定向到錯誤頁面。 ELMAH會負責確保您通知所有事情。

+0

感謝您的提示Micky!我會檢查出來的 – deadbug 2008-10-21 14:52:26

相關問題