4

我想在我的回复中添加 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");
4

2 回答 2

4

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

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

作为

  1. 它将替换相应标头的任何现有值
  2. Response.AddHeader只是为了保持与以前版本的兼容性

关于您遇到的异常,您应该尝试打开您的 Web 项目属性,“Web”=> 选中“使用本地 IIS Web 服务器”(而不是“使用 VS 开发服务器”)。

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

此外,这应该对自定义标题https://stackoverflow.com/a/15043027/1236044有所帮助

于 2013-02-26T08:40:13.977 回答
-1

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

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

来源

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

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

将产生一个带有名称name和值的标头value1, value2(在 ASP.NET 4.5、IIS Express 中尝试过,尽管我怀疑这很重要。)

于 2013-02-25T10:28:17.067 回答