访问AspNetRequest

时间:2016-08-12 16:37:26

标签: c# asp.net servicestack

我有一个全局过滤器,它为request.Items集合添加一个标记,后续过滤器也可以访问它。

我遇到的问题是当我在一个注入的类中时试图获取request.Items。

尝试访问Items数组时,使用此注入类 var req = HostContext.TryGetCurrentRequest();我的项目不再可用。我发现这是因为在过滤器中,提供的IRequest.Items数组是HttpContext.Current.Items对象中AspNetRequest的克隆副本,因此我添加的任何内容都不会放入{{1} }。

所以我的问题是,在这种情况下如何访问或注入当前HttpContext.Current.Items数组,或者我应该直接将项目添加到AspNetRequest.Items

请参阅https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/Host/AspNet/AspNetRequest.cs#L53了解克隆。

1 个答案:

答案 0 :(得分:2)

您可以从IRequest获取基础ASP.NET请求:

var aspReq = (HttpRequestPase)req.OriginalRequest;
var item = aspReq.Items["item"];

否则你也可以使用HttpContext.Current.Items单身。