Asp.net web api 自托管Web.Api-访问属性中的HttpRequestMessage或依赖项解析器
我有一个Web.Api应用程序目前正在IIS下运行,该应用程序正在使用Owin转换为自托管应用程序 我需要从属性中访问依赖项解析器,以便访问服务实例。(应用程序正在使用Unity进行DI) 由于我找不到将此服务注入属性的方法(如果有的话,我很想听听),我目前通过Asp.net web api 自托管Web.Api-访问属性中的HttpRequestMessage或依赖项解析器,asp.net-web-api,owin,Asp.net Web Api,Owin,我有一个Web.Api应用程序目前正在IIS下运行,该应用程序正在使用Owin转换为自托管应用程序 我需要从属性中访问依赖项解析器,以便访问服务实例。(应用程序正在使用Unity进行DI) 由于我找不到将此服务注入属性的方法(如果有的话,我很想听听),我目前通过HttpContext从HttpRequestMessage获取解析器。当前:- HttpRequestMessage request = HttpContext.Current.Items["MS_HttpRequestMessage"
HttpContext从HttpRequestMessage
获取解析器。当前
:-
HttpRequestMessage request = HttpContext.Current.Items["MS_HttpRequestMessage"] as HttpRequestMessage;
var service = request.GetDependencyScope().GetService(typeof(IService)) as IService;
这对于在IIS下运行的应用程序很好,但在OwinHttpContext
下不存在
我在应用程序启动时遇到了配置:-
public void Configuration(IAppBuilder appBuilder)
{
appBuilder.UseRequestScopeContext();
\\...
并从DelegatingHandler
protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
OwinRequestScopeContext.Current.Items["HttpRequestMessage"] = request;
\\...
受保护的异步覆盖任务SendAsync(HttpRequestMessage请求,CancellationToken CancellationToken)
{
OwinRequestScopeContext.Current.Items[“HttpRequestMessage”]=请求;
\\...
但当我在属性中访问OwinRequestScopeContext
时,OwinRequestScopeContext.Current.Items
为空
我似乎遇到了与相同的问题,但提供的答案似乎没有解决我的问题
有谁能告诉我,我在OwinRequestScopeContext
中做错了什么和/或从属性中访问依赖项解析程序或HttpRequestMessage的最简单方法是什么