我正在开发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
HttpContext只能访问一次,之后就无法访问了, 如果您需要从 HttpContext 获取多个属性, 您必须一起访问它们。
例如,
HttpContext.Current.Request.Headers.AllKeys.Any(...);
HttpContext.Current.Request.Headers.AllKeys.Any(...);
如果在两行之间放置其他代码,第二个 HttpContext 将不可用。 这是缺陷吗?