将自定义标头保留在ResponseHeader中

时间:2019-01-23 00:46:11

标签: c# azure-web-app-service response-headers

我的所有MVC控制器都继承自基本控制器,并且它具有一种在响应标头中添加所需标头的方法:

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

这在我的本地环境下可以正常工作,但是将其部署到Azure后,我没有看到此标头。

我可以在响应中看到其他标准标题,例如:

  

缓存控制:私有,s-maxage = 0

     

内容编码:gzip   内容长度:122内容类型:application / json; charset = utf-8

     

日期:服务器:Microsoft-IIS / 10.0

     

严格的运输安全性:max-age = 300

     

变化:接受编码

     

X-AspNet版本:4.0.30319

     

X-AspNetMvc版本:5.2

     

X-Powered-By:ASP.NET

只是我的标题在响应中丢失了。

我需要在Azure中配置某些内容吗?还是添加标题导致问题的方式?

1 个答案:

答案 0 :(得分:2)

我会考虑将代码移至中间件而不是过滤器(这是我假设您基于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();
}