无法从HttpContext.Current.Request.Headers.AllKeys.Any获取头属性

时间:2018-01-11 18:56:36

标签: api azure web httpcontext

我正在使用API​​控制器,它可以在过滤器中获取头属性,但无法在控制器中获取头属性,它在过滤器和控制器中使用相同的代码。

string applicationId = HttpContext.Current.Request.Headers.AllKeys.Any(x => x.ToUpper().Equals(Constants.ApplicationId.ToUpper())) ?HttpContext.Current.Request.Headers.GetValues(Constants.ApplicationId).FirstOrDefault() : string.Empty;

对于不使用过滤器的API,我们可以在控制器中获取头属性。

我在本地使用过滤器进行集成/经典管道模式测试,没有问题,但是中国Azure云中的Web角色存在问题。我们正在使用.Net4.5

1 个答案:

答案 0 :(得分:0)

HttpContext只能被访问一次,之后将不可用, 如果您需要从HttpContext获取多个属性, 您必须一起访问它们。

例如

HttpContext.Current.Request.Headers.AllKeys.Any(...);
HttpContext.Current.Request.Headers.AllKeys.Any(...);

如果在两行之间放置其他代码,则第二个HttpContext将不可用。 这是缺陷吗?