代码之家  ›  专栏  ›  技术社区  ›  Eilistraee

我可以在WebAPI消息处理程序中使用Autofac DI吗?

  •  13
  • Eilistraee  · 技术社区  · 12 年前

    我在ASP.NET WebAPI项目中成功地连接了Autofac,现在我想知道如何在MessageHandlers中解析服务。

    由于MessageHandlers必须在应用程序启动时添加,很明显,我无法在请求生存期范围内解决它们。这里没问题。

    然而,我想找到一种方法,在执行MessageHandler的SendAsync方法期间获得当前请求生存期范围,以便能够(例如)执行令牌验证、登录存储库等。。。

    我该怎么做?

    1 回复  |  直到 12 年前
        1
  •  22
  •   MobileOverlord    11 年前

    您可以使用 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);
        }
    }