C# проблемы аутентификации после обновления 'DependencyInjection' - PullRequest
0 голосов
/ 07 марта 2020

Я работаю над решением, которое использует оба. NET Core 2.1 и. NET Core 3.1 для проектов. Мне недавно пришлось обновить Microsoft.Extensions.DependencyInjection до версии 3.0.0 с 2.2.0. Тем не менее, теперь у меня возникает ошибка времени выполнения, когда я пытаюсь получить доступ к конечной точке:

System.InvalidOperationException: No service for type 'Microsoft.AspNetCore.Authentication.IAuthenticationHandlerProvider' has been registered.
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)

Теперь, когда я ищу в Интернете, я не могу найти ничего, кроме документации Microsoft и определения, упомянутого в сообщении GitHub где он просто говорит, что он должен provide the AuthenticationHandler и что responsible for returning the correct handler instance for a given scheme and request. соответственно.

Очевидно, что он прерывается при вызове Invoke из класса AuthenticationMiddleware, но я полагаю, что где-то читал, что вам не следует создавать свой легкая утилита аутентификации и что класс должен работать «из коробки», так что я не слишком уверен, как go решить эту проблему.

Боюсь, я не очень опытен аутентификация, поэтому я не уверен, какой код вам потребуется, чтобы определить проблемы. Если что-то упущено, пожалуйста, прокомментируйте, и я добавлю это. Любая помощь очень ценится.

1 Ответ

1 голос
/ 08 марта 2020

Я работаю над решением, которое использует оба. NET Core 2.1 и. NET Core 3.1 для проектов. Мне недавно пришлось обновить Microsoft.Extensions.DependencyInjection до версии 3.0.0 с 2.2.0. Однако теперь при попытке доступа к конечной точке возникает ошибка во время выполнения:

System.InvalidOperationException: Служба для типа «Microsoft.AspNetCore.Authentication.IAuthenticationHandlerProvider» не зарегистрирована. в Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService (поставщик IServiceProvider, тип serviceType) в Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService [провайдер T.server.http:). Домен документация Microsoft и определение, упомянутое в посте GitHub, где просто говорится, что он должен предоставлять AuthenticationHandler и что он отвечает за возвращение правильного экземпляра обработчика для данной схемы и запроса., соответственно.

Очевидно, что он ломается на вызов Invoke из класса AuthenticationMiddleware, бу Я полагаю, что где-то читал, что вы не должны легко создавать свое собственное средство аутентификации и что класс должен работать «из коробки», поэтому я не слишком уверен, как go решить эту проблему.

Боюсь, я не очень опытен в аутентификации, поэтому я не уверен, какой код вам понадобится для выявления проблем. Если что-то упущено, пожалуйста, прокомментируйте, и я добавлю это. Любая помощь очень ценится.

...