我有一个巨大的网站,在 ASP.Net 中有超过 100 个单个站点。当然,我尝试使用 try-catch 块或其他诸如验证控件之类的东西来捕获每个动作。
但是我想,如果发生错误而我没有被抓住,则发生以下情况:
1) Write the Error in Database
2) Show user a specific site instead the errorsite from asp.net
怎么做?
我有一个巨大的网站,在 ASP.Net 中有超过 100 个单个站点。当然,我尝试使用 try-catch 块或其他诸如验证控件之类的东西来捕获每个动作。
但是我想,如果发生错误而我没有被抓住,则发生以下情况:
1) Write the Error in Database
2) Show user a specific site instead the errorsite from asp.net
怎么做?
您可以使用Application_Error
in 中的事件处理程序Global.asx
来处理在页面级别未捕获的任何异常。参见,例如,
http://msdn.microsoft.com/en-us/library/24395wz3(v=vs.100).aspx
这取决于您在事件处理程序中所做的事情,因此您可以根据需要将错误记录到数据库中。您还可以重定向到您选择的另一个页面以显示您想要的错误。
请注意,所有未捕获的异常都会引发 Application_Error 事件,包括 Http 异常(例如 404 Not found)。您可能不想记录这些。
如果您不尝试 elmah,那么设置起来很容易。这取决于您的 100 个站点是如何设置的。但是您可能会考虑在 global.asax.cs 中使用全局 Application_Error事件并在其中添加您自己的处理代码。
protected void Application_Error(object sender, EventArgs e)
{
var lastException = Server.GetLastError();
//log it to db, re-route the request to an alternate location ... etc
}
另一种选择,同样取决于您的站点的设置/托管方式,即读取服务器上的 event_log,并检查 ASP.NET 错误,将相关详细信息保存到数据库。