添加双httpHeaders

时间:2013-02-25 10:13:38

标签: c# asp.net asp.net-mvc iis

我想将httpHeader添加到我的回复中

我想使用这段代码:

private void AddCustomHeader()
         {
             if (string.IsNullOrEmpty(HttpContext.Response.Headers.Get("Access-Control-Allow-Origin")))
             {
                 // Custom header
                 HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
             }
         }

但是当使用VS_server

运行时,它将始终在localhost上失败
This operation requires IIS integrated pipeline mode.

如果添加已存在的标题会怎样?

HttpContext.Response.AddHeader("name","value");

2 个答案:

答案 0 :(得分:4)

我会说(总结评论),你应该尝试使用:

 HttpContext.Current.Response.Headers.Set("Access-Control-Allow-Origin", "*");

as

  1. 它将替换相应标头的任何现有值
  2. Response.AddHeader就是为了保持与以前版本的兼容性
  3. 关于您获得的例外,您应该尝试打开您的网络项目属性,“Web”=>选中“使用本地IIS Web服务器”(而不是“使用VS Development Server”)。

    根据您的配置,您可能需要选中“使用IIS Express”

    此外,这应该对自定义标头https://stackoverflow.com/a/15043027/1236044

    有所帮助

答案 1 :(得分:-1)

关于此操作需要IIS集成管道模式错误:

  1. 在IIS管理器中选择应用程序池
  2. 点击“基本设置...”
  3. 确保在对话框
  4. 中为“托管管道模式”选择“集成”模式

    Source

    关于你的第二个问题(如果你添加一个已存在的标题会发生什么),它只会添加另一个具有相同名称的值:

    HttpContext.Response.AddHeader("name", "value1");
    HttpContext.Response.AddHeader("name", "value2");
    

    将导致名称为name且值为value1, value2的标头(在ASP.NET 4.5,IIS Express中尝试过,但我怀疑这很重要。)