我想将标识符传递给ASP.NET MVC中的自定义错误页面。
我将web.config设置为在状态500错误时重定向到错误页面。我不知道如何从抛出异常的应用程序代码中传递错误ID(也将HTTP状态设置为500)回到配置的错误页面。
如果我只使用Status 200并从控制器的Error方法返回一个视图并在那里完成所有逻辑,那么很容易,但是状态代码必须是500,所以这不是一个可接受的解决方案。
我也不会也不会使用会话。我想使用查询字符串或查看数据。
不重复。这是关于错误处理(状态代码500)和异常。 404是关于Page Not Found
答案 0 :(得分:2)
我不知道更好的方法来自定义信息到web.config中配置的错误页面。当我需要错误重定向时,这就是我通常所做的事情:
我将创建一个错误处理程序操作过滤器:
public class MyErrorHandler: HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if (filterContext.Exception != null)
{
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
filterContext.ExceptionHandled = true;
filterContext.Result = new RedirectResult("/error?error_id=123456", true);
return;
}
base.OnException(filterContext);
}
}
在异常过滤器中,您可能会尝试使用不同的错误ID处理不同的错误,或者您希望更改异常的任何内容。
然后将其应用于控制器或控制器类:
[MyErrorHandler]
public class HomeController : Controller
{
....
}
您将获得Http状态500并将被重定向到:
http://<host>/error?error_id=123456