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