自托管Web.Api - 在属性

时间:2016-03-30 06:24:47

标签: asp.net-web-api owin

我目前在IIS下运行的Web.Api应用程序正在使用Owin转换为自托管应用程序。

我需要从属性中访问依赖项解析程序,以便我可以访问服务的实例。 (该应用程序使用Unity进行DI)。

由于我无法找到将此服务注入属性的方法(如果有,我很乐意听到它),我目前从HttpRequestMessage获取解析器HttpContext.Current: -

HttpRequestMessage request = HttpContext.Current.Items["MS_HttpRequestMessage"] as HttpRequestMessage;

var service = request.GetDependencyScope().GetService(typeof(IService)) as IService;

这适用于在IIS下运行的应用,但在Owin下HttpContext不存在。

我遇到了我在应用启动中配置的OwinRequestScopeContext: -

public void Configuration(IAppBuilder appBuilder)
{
    appBuilder.UseRequestScopeContext();

    \\...

并在DelegatingHandler

中分配对请求对象的引用
protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
    OwinRequestScopeContext.Current.Items["HttpRequestMessage"] = request;

    \\...

但是当我在属性中访问OwinRequestScopeContext时,OwinRequestScopeContext.Current.Items为空。

我似乎遇到与here相同的问题,但提供的答案似乎并未解决我的问题。

任何人都可以告诉我我在OwinRequestScopeContext做错了什么和/或从我的属性中获取对依赖项解析器或HttpRequestMessage的最简单方法是什么?

0 个答案:

没有答案