【问题标题】:ASP.NET MVC and Web Api in the same project, duplicate http response header valuesASP.NET MVC 和 Web Api 在同一个项目中,重复的 http 响应头值
【发布时间】:2018-01-08 16:28:14
【问题描述】:

我有一个结合了 MVC 5 和 Web Api 2 的 ASP.NET Web 项目。该项目包含一个 web.config 文件,其中包含一些在 system.webserver 部分下定义的自定义 http 标头。这些标头适用于 MVC 请求,但 Api 请求有一些重复值。

<customHeaders>
    <clear />
    <add name="Expires" value="-1" />
    ... other headers
</customHeaders>

所有 API 请求都有重复的 Http 标头,例如 Cache-Control、Expires 和 Pragma,就像这样。

Cache-Control: no cache, no cache
Expires: -1,-1

Web API 框架似乎默认设置了这些值。是否可以禁用默认的 Api 标头并使用配置设置或完全忽略 Api 请求的配置设置?有什么好的解决办法吗?

像上面一样清除 customHeaders 元素或在添加之前先将其删除来覆盖它们也不起作用。

【问题讨论】:

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


    【解决方案1】:

    您可以解决此问题。从 web.config 中删除 customHeaders 标记。 在您的 MVC 5 项目中,添加自定义操作过滤器属性。

    public class AddHeadersFilterAttribute: ActionFilterAttribute
    {
      public override void OnActionExecuting(ActionExecutingContext filterContext)
      {
        filterContext.HttpContext.Response.AddHeader("header", "headerValue");
    
        base.OnActionExecuting(filterContext);
      }
    }
    

    用这个属性装饰你的 MVC 5 控制器的 BaseController。 这应该可以解决您的问题并让 Web API 2 发挥应有的作用。

    【讨论】:

      猜你喜欢
      • 2016-07-06
      • 2019-09-18
      • 2013-02-27
      • 2017-06-11
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 2015-06-05
      • 2015-09-06
      相关资源
      最近更新 更多