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



我正在研究 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 角色存在问题。 我们正在使用 .净4.5

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

例如

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

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

最新更新