Заголовок Web.config http не применяется к приложению dot net
Я пытаюсь добавить некоторые заголовки 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 ответ
Спасибо за комментарии, ребята, особенно Панагиотис, который указал, что ядро dot net не использует веб-конфигурацию.
В итоге я решил эту проблему, добавив задачу для добавления заголовка в 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);
};
});
Как было предложено в одном ответе на этот вопрос: добавьте заголовки ответа в промежуточное ПО ASP.NET Core.