Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC和Web Api在同一项目中,重复http响应头值_C#_Asp.net Mvc_Asp.net Web Api_Http Headers_Web Config - Fatal编程技术网

C# ASP.NET MVC和Web Api在同一项目中,重复http响应头值

C# ASP.NET MVC和Web Api在同一项目中,重复http响应头值,c#,asp.net-mvc,asp.net-web-api,http-headers,web-config,C#,Asp.net Mvc,Asp.net Web Api,Http Headers,Web Config,我有一个结合了MVC5和WebAPI2的ASP.NETWeb项目。该项目包含一个web.config文件,其中包含在system.webserver节下定义的一些自定义http头。对于MVC请求,这些头可以正常工作,但是对于Api请求,有一些重复的值 <customHeaders> <clear /> <add name="Expires" value="-1" /> ... other headers </customHeade

我有一个结合了MVC5和WebAPI2的ASP.NETWeb项目。该项目包含一个web.config文件,其中包含在system.webserver节下定义的一些自定义http头。对于MVC请求,这些头可以正常工作,但是对于Api请求,有一些重复的值

<customHeaders>
    <clear />
    <add name="Expires" value="-1" />
    ... other headers
</customHeaders>
Web API框架似乎默认设置了这些值。对于Api请求,是否可以禁用默认Api头并使用配置设置或完全忽略配置设置?有什么好的解决办法吗


像上面那样清除customHeaders元素,或者在添加之前先删除它们来覆盖它们,都是行不通的。

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

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

    base.OnActionExecuting(filterContext);
  }
}
使用此属性装饰MVC5控制器的BaseController。 这将解决您的问题,并让WebAPI2发挥应有的作用

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

    base.OnActionExecuting(filterContext);
  }
}