Проблема была замечена вызовом метода расширения container.RegisterWebApiControllers(GlobalConfiguration.Configuration)
на контейнере, который должен зарегистрировать контроллер веб-api с контейнером, но не сделал этого. Обратите внимание, что контроллеры веб-api определены в другом проекте библиотеки классов и подключены к запуску приложения с использованием настраиваемого типа IAssembliesResolver
.Контейнер простого инжектора не может зарегистрировать контроллер веб-API из внешней библиотеки Pluggedin
public static class SimpleInjectorWebApiInitializer
{
public static void Initialize()
{
var container = new Container();
GlobalConfiguration.Configuration.Services.Replace(typeof(IAssembliesResolver),
new ApiAssemblyResolver());
InitializeContainer(container);
container.RegisterWebApiControllers(GlobalConfiguration.Configuration);
container.Verify();
GlobalConfiguration.Configuration.DependencyResolver =
new SimpleInjectorWebApiDependencyResolver(container);
}
Я даже пытался позвонить, чтобы получить ControllerTypes
вручную, чтобы увидеть, что происходит с помощью кода ниже, но это никогда не срабатывает метод GetAssemblies
ни сделал это вернуть любой ControllerTypes
.
var controllerTypes = httpConfigServicesContainer.GetHttpControllerTypeResolver()
.GetControllerTypes(
GlobalConfiguration.Configuration.Services.GetAssembliesResolver());
Я почти выдергиваю все свои волосы, так как я не могу видеть, что я делаю неправильно. Заранее благодарны за Вашу помощь.
Какую версию Простой инжектор вы используете? – Steven
Я использую версию 2.7.2. –