/// <summary>
/// 异常事件处理
/// </summary>
public void DoError()
{
//是否自定义处理error
if (Common.ConfigValue.IsCustomError == false)
{
return;
}
Exception exception = Server.GetLastError();
Response.Clear();
HttpException httpException = exception as HttpException;
RouteData route = new RouteData();
route.Values.Add("controller", "HttpError");
if (Request.Url.Segments.Any(q => q.Equals("httperror", StringComparison.InvariantCultureIgnoreCase)))
{
Server.ClearError();
Response.Write("HttpError出错或对应的模板出错!");
Response.StatusCode = 500;
Response.End();
return;
}
if (httpException == null)
{
route.Values.Add("action", "Status500");
route.Values.Add("msg", exception.Message);
Response.StatusCode = 500;
}
else
{
if (httpException.GetHttpCode() == 404)
{
route.Values.Add("action", "Status404");
Response.StatusCode = 404;
}
else if (httpException.GetHttpCode() == 509)
{
route.Values.Add("action", "Status509");
Response.StatusCode = 509;
}
else
{
route.Values.Add("action", "Status500");
Response.StatusCode = 500;
}
route.Values.Add("msg", httpException.Message);
}
IController errorController = this.IContoller;
errorController.Execute(new RequestContext(new HttpContextWrapper(Application.Context), route));
Server.ClearError();
Response.End();
}