用于错误处理我有几行代码用于捕获global.asax中的每个错误
:void Application_Error(object sender, EventArgs e)
函数的内容如下所示:
try
{
Exception objErr = Server.GetLastError().GetBaseException();
if (!(objErr is HttpException))
{
shop.BLL.Utility.Errorlog.WriteError(objErr, "Global.asax caught an Exception");
}
else
{
HttpException hex = (HttpException)objErr;
if (hex.ErrorCode == 404)
Response.Redirect("404.aspx?msg=" + hex.Message);
else
{
shop.BLL.Utility.Errorlog.WriteError(hex, "Global.asax caught an HttpException code: " + hex.ErrorCode);
}
}
}
catch { }
Server.ClearError();
现在就是这样:当我转到blabla.aspx
时,它不存在,它最终在shop.BLL.Utility.Errorlog.WriteError(hex, "Global.asax caught an HttpException code: " + hex.ErrorCode);
行,错误代码的值为-2147467259
为什么不是404?
答案 0 :(得分:4)
我认为您应该使用GetHttpCode()
方法进行检查。
HttpException hex = (HttpException)objErr;
if (hex.GetHttpCode() == 404)
Response.Redirect("404.aspx?msg=" + hex.Message);
答案 1 :(得分:2)
找不到页面不会抛出异常,404错误是Http响应代码。如果您尝试为404处理设置自定义错误页面,可以使用
进行设置<customErrors>
web.config中的标签
看看这些文章......
http://aspnetresources.com/articles/CustomErrorPages 和 http://www.asp.net/hosting/tutorials/displaying-a-custom-error-page-cs
戴夫
答案 2 :(得分:1)
来自MSDN docs:
ErrorCode
获取错误的HRESULT。 (继承自ExternalException
)。
GetHttpCode()
获取返回客户端的HTTP响应状态代码。
HRESULT 0x80004005表示Generic Error
。
答案 3 :(得分:1)
我认为您不想使用ErrorCode - 这是内部错误。尝试在HttpException对象上使用GetHttpCode()。这应该返回你正在寻找的404。
if (hex.GetHttpCode() == 404)