在过去的两周里,我有一个案例,我无法弄明白,也许你们已经解决了同样的问题或者耳朵/阅读它并且可以帮助我。
我有一个ASP.NET项目,我在我的机器和其他机器上运行很好,每当我尝试调节QueryString时,我得到一个由System.Exception抛出的错误
问题是,在这个特定的机器(女巫在荷兰),Application_Error永远不会捕获Exception,它将Exception消息保存到日志中(就像在我的应用程序中应该完成)但它不会“破坏”Web应用程序......它只是继续!
如何以及如何才能实现这一目标?
为了示例,这是我的网页(HttpCache可以像这样调用,但只是指出我正在使用Web.HttpCache对象)
if( Request.QueryString["user"] != HttpCache["MYAPP-user"] ) {
myApp.DebugWrite("User was tempered.");
throw System.Exception("User was tempered.");
}
和 global.asax 我有
...
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
if (Server.GetLastError() != null)
{
Exception objErr = Server.GetLastError().GetBaseException();
String url = Request.Url.ToString();
String msg = objErr.Message;
String trc = objErr.StackTrace.ToString();
Response.Clear();
StringBuilder html = new StringBuilder();
// fill up html with html code in order to present a nice message
Response.Write(html.ToString());
Server.ClearError();
Response.Flush();
Response.End();
}
}
...
在我的测试机器中,我总是得到带有错误消息的html,以及日志中的消息...在这个特定的机器中,我只看到日志中的错误,但应用程序继续< /强> !!!
web.config 与所有计算机完全相同,此Web应用程序在.NET 2.0上运行
它有什么用?
答案 0 :(得分:-2)
在代码中注释掉Response和Server.ClearError()部分:
//Response.Clear();
StringBuilder html = new StringBuilder();
// fill up html with html code in order to present a nice message
Response.Write(html.ToString());
//Server.ClearError();
//Response.Flush();
//Response.End();