如何使用web.config设置自定义标头?

时间:2014-09-24 18:05:28

标签: asp.net-mvc-4 visual-studio-2012 iis-7.5 windows-server-2008-r2

我在web.config中有以下内容,但在服务器上发布到IIS 7.5之后,无法在IIS -> HTTP Response Headers下找到它们。

我发现服务器上的web.config也没有这些条目,但是在发布之前它们就在那里。所以我只能说发布过程剥离了它们,但web.config转换文件中没有任何内容可以删除它们。那么为什么它们会从发布的`web.config'中消失?

 <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" />
      </customHeaders>
    </httpProtocol>
</system.webServer>

1 个答案:

答案 0 :(得分:0)

您确定web.config是最佳选择吗?我倾向于选择Custom ActionFilter。这使您有机会选择何时(在什么方法上)您希望逻辑发生,并提供更多控制(特别是异常处理,在Action生命周期的各个阶段做什么)。

  

Microsoft recommends使用此方法进行Action执行之前发生的调用。

一些示例代码

    public class CustomFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            //add in your custom headers
            filterContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
            filterContext.HttpContext.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type");
            filterContext.HttpContext.Response.AddHeader("Access-Control-Allow-Methods", "GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS");

            base.OnActionExecuting(filterContext);
        }

        public void OnException(ExceptionContext filterContext)
        {
          //do some cool exception handling here
        }
    }