我的所有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中配置某些内容吗?还是添加标题导致问题的方式?
答案 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();
}