我在ASP.NET WebAPI项目中成功连接了Autofac,现在我想知道如何在我的MessageHandler中解析服务。
由于必须在应用程序启动时添加MessageHandlers,很明显我无法在请求生命周期范围内解决它们。这里没问题。
但是,我想找到一种在MessageHandler的SendAsync方法执行期间获取当前请求生存期范围的方法,以便能够(例如)执行令牌验证,登录存储库等...
我该怎么做?
答案 0 :(得分:17)
您可以使用GetDependencyScope()
上的HttpRequestMessage
扩展程序方法,它会为您提供IDependencyScope
,您可以在其中解析您在处理程序中所需的任何服务:
public class MyHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
IMyService myservice =
(IMyService)request.GetDependencyScope().GetService(typeof(IMyService));
// Do my stuff with myservice
return base.SendAsync(request, cancellationToken);
}
}