Интеграция Autofac с mediatr ASP.NET Web API2

Я разрабатываю приложение на 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", не видно из области видимости в....

Есть ли обходной путь, чтобы посредник ServiceFactory знал о области действия InofancePerRequest?

1 ответ

Решение

Использование InstancePerLifetimeScope вместо этого для разрешения контекста структуры объекта.

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

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

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

Другие вопросы по тегам