应用程序级别的.NET错误陷阱?

时间:2011-08-29 07:56:47

标签: .net asp.net

我一直在阅读有关在页面和应用程序级别捕获.Net错误的内容,并且无法决定我想要做什么的最佳套件。 我想要的只是一个基本的重定向页面,告诉用户发生了错误,无论错误是什么,或者发生了什么页面(也会有一些日志记录)。 这应该是应用程序级别吗?

感谢

3 个答案:

答案 0 :(得分:1)

您可以将customErrors属性添加到web.config中。它会在出错时重定向到指定的页面:

<system.web>
    <customErrors defaultRedirect="~/ErrorGeneric.html" mode="RemoteOnly">
        <error statusCode="500" redirect="~/Error500.html"/>
        <error statusCode="404" redirect="~/Error404.html"/>
    </customErrors>
<system.web>

此外,配置一个日志框架,可以帮助您存储错误信息以供以后分析。以下是一些框架:ELMAHlog4netCuttingEdge.Logging。我建议你使用其中一个框架,而不是在Application_Error事件中摆弄并自己编写日志功能。

答案 1 :(得分:0)

请参阅Internet Information Server(IIS 7)中的.NET错误页面功能。在这里,您可以为不同的HTTP错误添加不同的错误页面。使用您错误http://msdn.microsoft.com/en-us/library/bazc3hww.aspx

所需的HTTP错误代码抛出HTTP异常

答案 2 :(得分:0)

是的,您可以通过捕获Global.asax中的Application_Error事件来完成此操作。这是MSDN的一个例子:

void Application_Error(object sender, EventArgs e)
{
    // Get the exception object.
    Exception exc = Server.GetLastError();

    // Handle HTTP errors
    if (exc.GetType() == typeof(HttpException))
    {
        //Redirect HTTP errors to HttpError page
        Server.Transfer("HttpErrorPage.aspx");
    }
    // For other kinds of errors give the user some information   
    // Log the exception and notify system operators 
    // Clear the error from the server
    Server.ClearError();
}

有关完整示例,请参阅this page,以及有关此主题的一般建议。