Запрашиваемая служба «Microsoft.AspNetCore.Hosting.Server.IServer» не была зарегистрирована - PullRequest
0 голосов
/ 03 января 2019

После обновления до .net core 2.2 у нас возникает следующая проблема:

Autofac.Core.Registration.ComponentNotRegisteredException: «Запрошенная служба« Microsoft.AspNetCore.Hosting.Server.IServer »не имеетбыл зарегистрирован.Чтобы избежать этого исключения, либо зарегистрируйте компонент для предоставления услуги, проверьте регистрацию службы с помощью IsRegistered (), либо используйте метод ResolveOptional () для разрешения необязательной зависимости. '

Мы используем preBuilder.Populate(services);.

Есть идеи?

Спасибо за помощь

1 Ответ

0 голосов
/ 08 января 2019

У меня возникла та же проблема при выполнении Руководства по миграции Microsoft для перехода с Core 2.1 на 2.2 .

Проблема может возникнуть, если вы не используете WebHost.CreateDefaultBuilder для создания построителя веб-хоста по умолчанию, и вы изменили метод CreateWebHostBuilder метода Запрограммируйте класс для вызова ConfigureKestrel вместо UseKestrel , как предлагается в руководстве по миграции.

Насколько я понимаю, если вы используете WebHost.CreateDefaultBuilder для создания построителя веб-хоста по умолчанию, он уже вызывает UseKestrel , который регистрирует службу IServer . Но вы можете столкнуться с некоторыми конфликтами , если также используете UseIIS , поэтому, чтобы избежать этих проблем, существует новый вызов ConfigureKestrel , который не регистрирует IServer . Поэтому я думаю, что если вы не используете WebHost.CreateDefaultBuilder , вам все равно нужно явно вызвать UseKestrel или UseIIS .

Конечно, это может быть что-то еще, что вызывает проблемы в вашем случае, но я подозреваю, что слепое следование руководству по миграции (как я это сделал) может вызвать проблемы у многих разработчиков.

...