我在Web.config中设置自定义错误启用:
<customErrors mode="On"/>
然后在Application_Start中输入以下内容:
protected void Application_Error(object sender, EventArgs e) {
var ex = Server.GetLastError().GetBaseException();
var routeData = new RouteData();
if (ex.GetType() == typeof(HttpException)) {
var httpException = (HttpException)ex;
var code = httpException.GetHttpCode();
routeData.Values.Add("status", code);
} else {
routeData.Values.Add("status", -1);
}
routeData.Values.Add("action", "Index");
routeData.Values.Add("controller", "Error");
routeData.Values.Add("error", ex);
IController errorController = new Kavand.Web.Controllers.ErrorController();
errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}
我也创建这样的错误 Controller :
public class ErrorController : Kavand.Web.Mvc.Kontroller
{
public ActionResult Index(int status, Exception error) {
Response.StatusCode = status;
HttpStatusCode statuscode = (HttpStatusCode)status;
return View(statuscode);
}
}
但是,当发生错误时,将显示黄页,而不是我的自定义 View !大家可以帮我吗?
非常感谢,问候
最佳答案
提取后,请不要忘记清除Application_Error
中的错误:
protected void Application_Error(object sender, EventArgs e)
{
var ex = Server.GetLastError().GetBaseException();
Server.ClearError(); // <-- that's what you are missing
var routeData = new RouteData();
...
}
同样重要的是,删除不再在
HandleErrorAttribute
中的RegisterGlobalFilters
静态方法中添加的Global.asax
全局属性,因为您不再需要它。您可能还会发现following answer有用。
关于asp.net-mvc-3 - 在MVC 3中显示自定义错误页面不起作用!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6498004/