Web.config http标头不适用于dot net app

时间:2018-03-08 13:15:15

标签: asp.net-core octopus-deploy appveyor

我正在尝试为我的应用程序提供的所有HTTP响应添加一些HTTP标头。

我添加了一个Web.config文件,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
  <configuration>
    <system.webServer>
      <httpProtocol>
        <customHeaders>
          <add name="Content-Security-Policy" value="default-src 'self' some urls...;
           form-action some url... https:;
           upgrade-insecure-requests;" />

          <add name="Strict-Transport-Security" value="max-age=31536000" xdt:Transform="Insert" />

        </customHeaders>
      </httpProtocol>
    </system.webServer>
  </configuration>

我正在使用appveyor进行构建和章鱼进行部署。

我尝试添加一个ItemGroup和Content标记以在项目中包含Web.config,但是出现了重复的错误,所以我认为在构建时已经包含了Web.config。

当我尝试访问我网站上的网页时,尚未添加HTTP标头。

1 个答案:

答案 0 :(得分:0)

感谢评论人员,尤其是Panagiotis,他们指出dot net core不使用网络配置。

我最后通过在StartUp.Configure中添加一个添加标题的任务来解决这个问题:

投票结束 或者,您也可以直接在Startup.cs Configure方法中添加中间件。

    app.Use(
        next =>
        {
            return async context =>
            {
                var stopWatch = new Stopwatch();
                stopWatch.Start();
                context.Response.OnStarting(
                    () =>
                    {
                        stopWatch.Stop();
                        context.Response.Headers.Add("X-ResponseTime-Ms", stopWatch.ElapsedMilliseconds.ToString());
                        return Task.CompletedTask;
                    });

                await next(context);
            };
        });

正如在这个问题的一个答案中所建议的那样:Add Response Headers to ASP.NET Core Middleware