如标题中所述,我正在尝试解决单例方法中的服务,但到目前为止,我无法确定问题所在。
Current thread Thread #6: Message written by Thread #3
Current thread Thread #1: Message written by Thread #1
Current thread Thread #8: Message written by Thread #8
Current thread Thread #5: Message written by Thread #1
Current thread Thread #4: Message written by Thread #4
Current thread Thread #9: Message written by Thread #9
Current thread Thread #7: Message written by Thread #3
Current thread Thread #2: Message written by Thread #3
Current thread Thread #0: Message written by Thread #3
Current thread Thread #3: Message written by Thread #3
问题是GetRequestLifetimeScope总是返回null。有任何想法吗?感谢
答案 0 :(得分:0)
我发现了这个问题。发生的事情是,只有在执行到达控制器时才会创建Autofac Web请求标记。
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (securityProvider.ValidateAccess(sessionId, routeTemplate, request.Method.Method, out sessionData))
{
request.GetDependencyScope().GetRequestLifetimeScope().<IApiStorageService>()
}
}
在将请求传递给负责调用Action的任务之前,该代码在Web API处理程序中执行。
var apiStorageService = request.GetDependencyScope().GetRequestLifetimeScope().Resolve<IApiStorageService>();
if (securityProvider.ValidateAccess(sessionId, routeTemplate, request.Method.Method, out sessionData, apiStorageService))
{
}
作为一种解决方法,我在方法调用之前解析了服务并将其作为参数传递,它看起来非常讨厌,但我找不到更好的方法来实现它。