将 Autofac 与 mediatr ASP.NET Web API2 集成

Integrate Autofac with mediatr ASP.NET Web API2

我使用 autofac 和 mediatR 在 asp.net api2 上开发了一个应用程序,目前面临依赖注入的一些问题。

// This is registered in the global.asax file and working properly in the controller level //i'm trying to register the entity framework context as instance per request builder.RegisterType<EFContext>().InstancePerRequest();

但是,当通过 MediatR 管道发送命令时,出现异常,因为 MetdiatR 服务提供商无法读取 http 请求范围。

以下代码也位于全局 asax 文件中。

builder.Register<ServiceFactory>(context =>
            {
                var componentContext = context.Resolve<IComponentContext>();
                return t => { object o;

                    return componentContext.TryResolve(t, out o) ? o : null; };
            });

当服务定位器的委托函数被调用时,它抛出一个错误,指出没有范围与标签匹配 "AutofacWebRequest" 在范围内可见....

是否有任何解决方法可以让 mediatr ServiceFactory 知道 autofact InstancePerRequest 范围?

使用 InstancePerLifetimeScope 来解析 entity framework 上下文。

我没有使用过 mediatR,但它似乎不遵循请求响应模式,因此 Autofac 无法将任何请求生命周期与其相关联。

请注意,Autofac 中 Request Scope 和 Lifetime Scope 的区别仅在于 Autofac 会将请求视为生命周期。

您可以从此处进一步了解范围, https://autofaccn.readthedocs.io/en/latest/lifetime/instance-scope.html