小编ble*_*sle的帖子

带有依赖项注入的HttpContext.Items的WebApi等效项

我正在构建一个ASP.NET WebApi 2.1应用程序,该应用程序需要与HttpContext.Items等效的每个请求缓存。

我什至不能在IIS托管下使用HttpContext,因为在服务/回购层(HttpContext.Current变为异步工作)时,HttpContext似乎丢失了(使用TPL调用,由于某些接口需要匹配,因此不进行异步/等待)空值)。

我使用的是unity 3.5,无法实现按请求进行正确的注入。尝试了HttpControllerActivator方法:

public class HttpControllerActivator : IHttpControllerActivator
{
    private readonly IUnityContainer _container;
    private readonly IHttpControllerActivator _activator;

    public HttpControllerActivator(IUnityContainer container, IHttpControllerActivator activator)
    {
        _container = container;
        _activator = activator;
    }

    public IHttpController Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)
    {
        IHttpController controller = _activator.Create(request, controllerDescriptor, controllerType);
        _container.RegisterInstance<System.Net.Http.HttpRequestMessage>(request, new HierarchicalLifetimeManager());

        return controller;

    }
}
Run Code Online (Sandbox Code Playgroud)

但这会将HttpRequestMessage注册在根容器上,而不是在_activator.Create内部由BeginScope()调用创建的子容器上。结果,我在并发负载下得到混合请求实例。

知道如何解决这个问题吗?两天以来我一直在网上搜索,因此没有找到任何真正的解决方案...

unity-container asp.net-web-api

5
推荐指数
1
解决办法
2129
查看次数

标签 统计

asp.net-web-api ×1

unity-container ×1