ASP.net-空白页的问题


protected
 void Application_Error(object sender, EventArgs e)
        {
            ILog log = LogManager .GetLogger(typeof( MvcApplication));
            Exception objErr = Server.GetLastError().GetBaseException();
            if (objErr.ToString().IndexOf("favicon.ico" )==-1)
            log.Error(objErr);
            Server.ClearError();
        }
 
本示例在应用程序统一记录错误日志, 可从事件查看器访问应用程序日志。
但在记录错误之后,Server.ClearError();” 在这种情况下该页就为 空白页面
应该直接跳转,重定向到另一个更用户友好的错误页或者根据需要执行一些其他操作。
 

如何使用 Web.config 文件
如果您不调用 Server.ClearError 或者捕获 Page_Error 或 Application_Error 事件中的错误,则将根据 Web.config 文件的 <customErrors> 部分中的设置处理错误。在 <customErrors> 部分,可将重定向页指定为默认的错误页 (defaultRedirect) 或者根据引发的 HTTP 错误代码指定特定页。您可使用此方法自定义用户收到的错误信息。

如果发生在应用程序以前的任一级别都未捕获到的错误,则显示这个自定义页。本节演示如何修改 Global.asax 文件,以便从不调用 Server.ClearError。因此,错误在作为捕获错误的最后一点的 Web.config 文件中进行处理。 1. 从上一个示例中打开 Global.asax 文件。 
2. 将 Server.ClearError 行注释掉,以便确保错误出现在 Web.config 文件中。 
3. 将所作更改保存到 Global.asax 中。代码看起来应类似如下形式: 
using System.Diagnostics;

protected void Application_Error(object sender, EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
string err = "Error Caught in Application_Error event/n" +
"Error in:" + Request.Url.ToString() +
"/nError Message:"+ objErr.Message.ToString() + 
"/nStack Trace:"+ objErr.StackTrace.ToString();
EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
//Server.ClearError();
//additional actions...

}
 
将以下代码添加到 <customErrors> 部分,以便将用户重定向到自定义页: 
<customErrors defaultRedirect="errorStatus.htm" mode="On">
</customErrors>
备注:必须修改 defaultRedirect 属性中的文件路径,以便它引用相关的 Web 服务器和应用程序名称。 
posted @ 2013-11-28 11:45  肚肚  阅读(1462)  评论(0编辑  收藏  举报