我们的群组旧版ASP 3.0网络应用程序能够通过在IIS的自定义错误选项卡中设置自定义错误文件来利用全局错误文件。我无法为ASP.NET应用程序找到类似的解决方案。
有没有人知道是否有办法让一个集中的“Error.aspx”页面(例如)会为整个应用程序池捕获错误?目标是避免向每个应用程序的全局错误处理程序添加自定义代码....
非常感谢任何指导!
答案 0 :(得分:1)
您可以将<customErrors defaultRedirect="[url]"></customErrors>
标记添加到web.config,甚至可以添加到machine.config以重定向到自定义错误页面。自定义错误标记还支持多个可用于定义自定义错误的子元素。
记住编辑machine.config文件时,它会影响该计算机上的所有应用程序。
答案 1 :(得分:1)
签出global.asax.cs文件的Application_Error方法。
您可以使用以下内容获取错误的详细信息:
Exception myError = Server.GetLastError();
Exception baseException = myError.GetBaseException();
答案 2 :(得分:1)
我们使用ELMAH来做你想要的。您可以在机器级别工作,因此您不必在每个网站上设置自定义错误处理:
http://code.google.com/p/elmah/
然后您还可以合并&lt; customErrors&gt;在web.config中标记以确保它们被重定向到错误页面。 ELMAH将负责确保您收到有关所有内容的通知。
答案 3 :(得分:0)
您还可以通过利用Global.asax文件中的Application_OnError事件来捕获错误。然后,你可以像上面所说的Ben R那样做。通过Server.GetLastError()例程捕获错误。
答案 4 :(得分: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);
}
}
它看起来像这样。