Сохраните пользовательский заголовок в ResponseHeader

У меня есть все мои контроллеры MVC, наследуемые от базового контроллера, и у него есть метод, который добавляет мой требуемый заголовок в заголовок ответа:

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{    
    filterContext.HttpContext.Response.AddHeader("AdditionaInfo", Environment.MachineName);
}

Это хорошо работает в моей локальной среде, но я не вижу этот заголовок в ответ, как только разверну его в Azure.

Я вижу другие стандартные заголовки в ответе:

Cache-Control: приватный, s-maxage = 0

Content-Encoding: gzip Content-Length: 122 Тип содержимого: приложение /json; кодировка = UTF-8

Дата: Сервер: Microsoft-IIS/10.0

Строгая транспортная безопасность: max-age=300

Варьируется: Accept-Encoding

X-AspNet-версия: 4.0.30319

X-AspNetMvc-версия: 5.2

X-Powered-By: ASP.NET

Просто мой заголовок отсутствует в ответе.

Нужно ли что-то настраивать в Azure? Или это способ добавления заголовка, который вызывает проблему?

1 ответ

Решение

Я бы посоветовал перенести код в Middleware, а не в фильтр (именно здесь я предполагаю, что вы делаете это на основе OnActionExecuted название метода).

Вы можете сделать это простым способом в startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    // other code here

    app.Use(async (context, next) =>
    {
        context.Response.Headers.Add("AdditionalInfo", Environment.MachineName);
        await next.Invoke();
    });

    // additional code here

    app.UseMvc();
}
Другие вопросы по тегам