Интеграция Autofac с mediatr ASP.NET Web API2 - PullRequest
0 голосов
/ 19 февраля 2019

Я разрабатываю приложение на asp.net api2 с autofac и mediatR, в настоящее время сталкивающееся с некоторой проблемой с внедрением зависимостей.

// 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 знал об области действия Inofance InstancePerRequest?

1 Ответ

0 голосов
/ 20 февраля 2019

Используйте InstancePerLifetimeScope вместо разрешения контекста структуры сущности.

Я не использовал mediatR, но похоже, что он не следует шаблону ответа на запрос, из-за чего Autofac не может связать с ним время жизни запроса.

Обратите внимание, что разница междуОбласть запроса и срок действия в Autofac только в том, что Autofac будет обрабатывать запрос как пожизненный.

Подробнее об областях можно прочитать здесь, https://autofaccn.readthedocs.io/en/latest/lifetime/instance-scope.html

...