【问题标题】:Pass value to custom error page in ASP.NET MVC将值传递给 ASP.NET MVC 中的自定义错误页面
【发布时间】:2015-03-12 01:12:54
【问题描述】:

我想将标识符传递给 ASP.NET MVC 中的自定义错误页面。

我将 web.config 设置为在出现状态 500 错误时重定向到错误页面。我不知道如何将引发异常(也将 HTTP 状态设置为 500)的应用程序代码中的错误 ID 传递回配置的错误页面。

如果我只使用 Status 200 并从控制器的 Error 方法返回一个视图并在那里执行所有逻辑,这很容易,但是 Status 代码必须是 500,所以这不是一个可接受的解决方案。

我也不会也不会为此使用会话。我想使用查询字符串或查看数据。

不是重复的。这是关于错误处理(状态代码 500)和异常。 404 是关于找不到页面

【问题讨论】:

标签: asp.net asp.net-mvc


【解决方案1】:

我不知道将信息自定义到 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-03
    • 2014-06-27
    • 1970-01-01
    • 2015-11-14
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多