0

我有一个巨大的网站,在 ASP.Net 中有超过 100 个单个站点。当然,我尝试使用 try-catch 块或其他诸如验证控件之类的东西来捕获每个动作。

但是我想,如果发生错误而我没有被抓住,则发生以下情况:

1) Write the Error in Database
2) Show user a specific site instead the errorsite from asp.net

怎么做?

4

3 回答 3

1

您可以使用Application_Errorin 中的事件处理程序Global.asx来处理在页面级别未捕获的任何异常。参见,例如,

http://msdn.microsoft.com/en-us/library/24395wz3(v=vs.100).aspx

这取决于您在事件处理程序中所做的事情,因此您可以根据需要将错误记录到数据库中。您还可以重定向到您选择的另一个页面以显示您想要的错误。

请注意,所有未捕获的异常都会引发 Application_Error 事件,包括 Http 异常(例如 404 Not found)。您可能不想记录这些。

于 2013-09-07T08:57:36.527 回答
1

你应该试试ELMAH

查看 Scott Hanselman 的博客文章,了解如何将其集成到 asp.net 网站并使其工作。

以下是 Scott Mitchel 关于如何使用 Elmah 记录错误以及如何向用户显示自定义错误页面的文章:

http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/logging-error-details-with-elmah-cs

http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/displaying-a-custom-error-page-cs

于 2013-09-07T08:31:18.873 回答
1

如果您不尝试 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 错误,将相关详细信息保存到数据库。

于 2013-09-07T08:50:40.897 回答