我在我的 ASP.NET WebAPI 项目中成功连接了 Autofac,现在我想知道如何在我的 MessageHandlers 中解析服务。
由于必须在应用程序启动时添加 MessageHandlers,很明显我无法在请求生命周期范围内解决它们。这里没问题。
但是,我想找到一种在执行 MessageHandler 的 SendAsync 方法期间获取当前请求生命周期范围的方法,以便能够(例如)执行令牌验证、登录存储库等......
我该怎么做?
我在我的 ASP.NET WebAPI 项目中成功连接了 Autofac,现在我想知道如何在我的 MessageHandlers 中解析服务。
由于必须在应用程序启动时添加 MessageHandlers,很明显我无法在请求生命周期范围内解决它们。这里没问题。
但是,我想找到一种在执行 MessageHandler 的 SendAsync 方法期间获取当前请求生命周期范围的方法,以便能够(例如)执行令牌验证、登录存储库等......
我该怎么做?
您可以使用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);
}
}