【问题标题】:How can i set http header on exception?如何在异常上设置 http 标头?
【发布时间】:2016-05-31 07:25:55
【问题描述】:

我想在错误 500 页面上添加一个自定义 http 标头,我想在控制器中执行此操作 - 我只是想不通。

这是我尝试过的:

public virtual void OnException(ExceptionContext filterContext)
{
    if (filterContext.Exception is HttpException)
    {
        var statusCode = ((HttpException) filterContext.Exception).GetHttpCode();
        if (statusCode >= 500 && statusCode < 600)
        {
            filterContext.RequestContext.HttpContext.Response.AddHeader("Custom-Key", "error");
        }
    }
}

但是,它并没有添加标题,所以肯定有问题。

有什么想法吗?

谢谢

【问题讨论】:

    标签: c# .net asp.net-mvc http-headers


    【解决方案1】:

    发生这种情况是因为您错过了处理异常。我强烈建议您在 try catch 块中执行此操作(如果这样做,您将无法在 OnException 方法中捕获此异常)。

    但为了回答您的问题,您需要告诉上下文该异常已被处理。您需要以下行:

    filterContext.ExceptionHandled = true;
    

    合起来:

    public virtual void OnException(ExceptionContext filterContext)
    {
        if (filterContext.Exception is HttpException)
        {
            var statusCode = ((HttpException)filterContext.Exception).GetHttpCode();
            if (statusCode >= 500 && statusCode < 600)
            {
                filterContext.RequestContext.HttpContext.Response.AddHeader("Custom-Key", "error");
                filterContext.ExceptionHandled = true;
            }
        }
    }
    

    【讨论】:

    • 非常感谢 rustem!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2017-12-13
    • 2014-05-16
    • 2020-04-17
    • 2021-03-27
    • 1970-01-01
    相关资源
    最近更新 更多