来自桌面背景我不确定如何将我捕获的异常传递到错误页面以避免标准异常屏幕被我看到用户。将例外传递给ASP.net/C中的错误屏幕
我的一般问题是如何将页面X中的异常传递给ASP.net中的Error页面?
来自桌面背景我不确定如何将我捕获的异常传递到错误页面以避免标准异常屏幕被我看到用户。将例外传递给ASP.net/C中的错误屏幕
我的一般问题是如何将页面X中的异常传递给ASP.net中的Error页面?
我建议使用在web.config中的customErrors部分:
<customErrors mode="RemoteOnly" defaultRedirect="/error.html">
<error statusCode="403" redirect="/accessdenied.html" />
<error statusCode="404" redirect="/pagenotfound.html" />
</customErrors>
,然后使用ELMAH电子邮件和/或记录错误。
我想你可以使用的Global.asax - Application_Exception处理程序来捕获异常,然后将其存储在一个错误页面显示。
但实际上,您的错误页面不应该包含可能会导致另一个错误的代码。它应该很简单,“糟糕!出错了”页面。
如果您想了解有关错误的详细信息,请使用Windows的事件查看器或ELMAH或采用某种日志记录机制。
使用asp.net中自定义错误页,你可以在web.config中customError部分中找到它
我使用的模式是记录错误在try/catch块(使用log4net的) ,然后做一个response.redirect到一个简单的错误页面。这假定你不需要显示任何错误细节。
如果您需要单独页面上的异常详细信息,则可能需要查看Server.GetLastError。我在global.asax(在Application_Error事件中)使用它记录未处理的异常并重定向到错误页面。
我们已经在Global.asax Application_Error事件中捕获异常,将它们存储在会话中,并重定向到我们的错误页面。或者,您可以编码错误消息并将其传递到querystring中的错误页面。
您也可以从
Server.GetLastError();
例外,我们捕捉到Global.asax文件的例外,它存储在会话,用户然后被重定向到错误页面,我们抓住了我们的例外会话变量并将消息信息显示给用户。
protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
this.Session[CacheProvider.ToCacheKey(CacheKeys.LastError)] = ex;
}
我们会在显示用户之前记录错误信息。
我讨厌“糟糕!出事了”,充满激情。在错误报告页面周围应该有一些微不足道的错误处理,最终可能会级联到“Oops”页面,但是如果到达该Oops页面,则什么都不应该运行。我想同时告诉智能手机的编码人员以及其他任何人对此有罪和虚假的行为。 – 2009-05-31 22:50:43
@ stimpy77这取决于...有时候这就是事件日志和ELMAH的用途......而错误页面只是让用户失望而已。 – chakrit 2009-06-02 10:43:20