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

问题描述 投票:0回答:1

我正在开发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;

对于不使用filter的API,我们可以在controller中获取header属性。

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

azure httpcontext
1个回答
0
投票

HttpContext只能访问一次,之后就无法访问了, 如果您需要从 HttpContext 获取多个属性, 您必须一起访问它们。

例如,

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

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

© www.soinside.com 2019 - 2024. All rights reserved.