我在asp.net和C#中有Web应用程序
如果异常发生在此应用程序的任何位置,我会尝试处理异常。
比如假设行为应该是if和这样的异常发生
//generate your fictional exception
int x = 1;
int y = 0;
int z = x / y;
它应该在global.ascx文件的app_error中捕获它并将其重定向到Default.aspx页面。我得到了记录部分,但重定向不起作用,因为我仍然得到
>'/'应用程序中的服务器错误。 页。或者可能是重定向并在中间被杀..
这就是global.ascx
中的内容 protected void Application_Error(object sender, EventArgs e)
{
logger.Fatal(this.Server.GetLastError().GetBaseException());
logger.Info("FatalLogger Passed");
//get reference to the source of the exception chain
Exception ex = Server.GetLastError().GetBaseException();
Response.Redirect("~/Default.aspx?error=MessageHere");
}
这在web.config中的代码中
<authentication mode="Forms">
<forms loginUrl="Login.aspx" defaultUrl="~/Default.aspx" name="GUI" slidingExpiration="true" timeout="30" path="/">
</forms>
</authentication>
任何想法..生病;很乐意提供更多信息。
由于
好吧我想要这种方法是有原因的,因为无论何时出现错误,用户都会退出,我不希望这种情况发生,而是转到默认页面
答案 0 :(得分:1)
顺便说一句,我推荐ELMAH for the logging part ...
答案 1 :(得分:1)
您是否尝试在Application_Error中重定向之前调用Server.ClearError()?我玩这个已经有一段时间,但我相信如果你不调用ClearError,那么框架仍然认为错误是未处理的。
答案 2 :(得分:0)
尝试使用Server.Transfer(page)
还要小心通过查询字符串传递错误消息,因为它可以打开你的XSS问题。传递错误代码,然后根据代码显示消息(使用switch
语句)