我們組的傳統ASP 3.0 Web應用程序可以通過在IIS的「自定義錯誤」選項卡中設置自定義錯誤文件來利用全局錯誤文件。我無法找到類似的ASP.NET應用程序解決方案。ASP.NET和IIS6:捕獲所有應用程序錯誤
有誰知道是否有一種方法可以讓一個集中的「Error.aspx」頁面(例如)爲整個應用程序池捕獲錯誤?目標是避免添加自定義代碼到每個應用程序的全局錯誤處理程序....
任何指導非常感謝!
我們組的傳統ASP 3.0 Web應用程序可以通過在IIS的「自定義錯誤」選項卡中設置自定義錯誤文件來利用全局錯誤文件。我無法找到類似的ASP.NET應用程序解決方案。ASP.NET和IIS6:捕獲所有應用程序錯誤
有誰知道是否有一種方法可以讓一個集中的「Error.aspx」頁面(例如)爲整個應用程序池捕獲錯誤?目標是避免添加自定義代碼到每個應用程序的全局錯誤處理程序....
任何指導非常感謝!
您可以將<customErrors defaultRedirect="[url]"></customErrors>
標記添加到您的web.config中,甚至可以添加到machine.config中以重定向到自定義錯誤頁面。自定義錯誤標籤還支持可用於定義自定義錯誤的多個子元素。
只要記住編輯machine.config文件時,它會影響該機器上的所有應用程序。
檢出global.asax.cs文件的Application_Error方法。
您可以通過使用像得到錯誤的詳細信息中的位置:
Exception myError = Server.GetLastError();
Exception baseException = myError.GetBaseException();
您的還利用Application_OnError事件在Global.asax文件捕獲錯誤。然後,你可以像Ben R所說的那樣做。通過Server.GetLastError()例程捕獲錯誤。
您還可以構建一個名爲「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);
}
}
它看起來像這樣。
我們已經使用ELMAH來做你正在問的東西。你可以把它在機器級別上工作,所以你不必設置自定義錯誤處理對每個網站:
http://code.google.com/p/elmah/
你還可以再納入<的customErrors在你的web.config >標籤以確保它們被重定向到錯誤頁面。 ELMAH會負責確保您通知所有事情。
感謝您的提示Micky!我會檢查出來的 – deadbug 2008-10-21 14:52:26
@SaaS:感謝您的迴應!它基本上是在使用 時做一個Response.Redirect,對吧?如果是這樣,服務器錯誤信息在加載錯誤頁面時不會被轉儲? –
deadbug
2008-10-21 06:21:20