【问题标题】:Web.config http header does not apply to dot net appWeb.config http 标头不适用于 dot net app
【发布时间】:2018-03-08 13:15:14
【问题描述】:

我正在尝试将一些 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 进行构建,使用 octopus 进行部署。

我尝试添加 ItemGroup 和 Content 标记以将 Web.config 包含在项目中,但收到错误消息说存在重复,因此我认为 Web.config 在构建时已包含。

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

【问题讨论】:

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


【解决方案1】:

感谢 cmets 伙计们,特别是指出 dot net core 不使用 web config 的 Panagiotis。

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

否决票 或者,您也可以直接在 Startup.cs 的配置方法中添加中间件。

    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

【讨论】:

    猜你喜欢
    • 2017-08-20
    • 2018-10-12
    • 2017-11-06
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多