#c# #asp.net-core #asp.net-core-webapi #nullreferenceexception
#c# #asp.net-core #asp.net-core-webapi #исключение nullreferenceexception
Вопрос:
У меня есть приложение в asp.net ядро 2.1. Я зарегистрировал / внедрил HttpContextAccessor в файле startup.cs, как показано ниже.
services.AddHttpContextAccessor();
Также я создал объект для интерфейса IHttpContextAccessor и инициировал этот объект в конструкторе класса внедрения зависимостей «GetScopedServicesTools»
public readonly IHttpContextAccessor HttpContextAccessor;
public GetScopedServicesTools(IHttpContextAccessor _httpContextAccessor)
{
HttpContextAccessor = _httpContextAccessor;
}
Я создал объект для класса DI «GetScopedServicesTools», но не уверен, какое значение нужно передать конструктору этого класса.
private GetScopedServicesTools getScopedServices;
Не могли бы вы, пожалуйста, помочь мне, какое значение нужно передать конструктору класса «GetScopedServicesTools».
Ответ №1:
Если вы хотите использовать этот класс с контейнером DI, вам также следует зарегистрироваться GetScopedServicesTools
у поставщика услуг.
В вашем Startup.cs
вы можете сделать services.AddScoped<GetScopedServicesTools>();
, а затем просто внедрить его в свои контроллеры или где угодно.
Примечание:
Однако я хотел бы отметить, что механизм DI уже предоставляет «из коробки» то, чего вы пытаетесь достичь с помощью своего GetScopedServicesTools
класса. Вы можете просто ввести IHttpContextAccessor куда угодно, поскольку вы уже зарегистрировали его у поставщика услуг с помощью services.AddHttpContextAccessor();
. То, что вы делаете со своим дополнительным классом, является антишаблоном, и его следует избегать.