我有一个全局过滤器,它为request.Items集合添加一个标记,后续过滤器也可以访问它。
我遇到的问题是当我在一个注入的类中时试图获取request.Items。
尝试访问Items数组时,使用此注入类
var req = HostContext.TryGetCurrentRequest();
我的项目不再可用。我发现这是因为在过滤器中,提供的IRequest.Items
数组是HttpContext.Current.Items
对象中AspNetRequest
的克隆副本,因此我添加的任何内容都不会放入{{1} }。
所以我的问题是,在这种情况下如何访问或注入当前HttpContext.Current.Items
数组,或者我应该直接将项目添加到AspNetRequest.Items
?
答案 0 :(得分:2)
您可以从IRequest
获取基础ASP.NET请求:
var aspReq = (HttpRequestPase)req.OriginalRequest;
var item = aspReq.Items["item"];
否则你也可以使用HttpContext.Current.Items
单身。