Невозможно разрешить службу для типа Microsoft.AspNetCore.DataProtection.IDataProtector - PullRequest
0 голосов
/ 01 августа 2020

У меня есть специальная служба, в которой я использую Microsoft IDataProtector. Я зарегистрировал свою службу при запуске с AddScoped, но у меня проблема с использованием IDataProtector.

сообщение об ошибке:

Невозможно разрешить службу для типа 'Microsoft.AspNetCore .DataProtection.IDataProtector 'при попытке активировать' Сервис '.

вот мой код:

public class Service: IInjectable
{
    private readonly IDataProtector _protector;
     
    public Service(IDataProtector protector)
    {
      _protector = protector.CreateProtector("key");
    }

    other code ...
}

Способ, которым я зарегистрировал свою службу:

    public static void RegisterScoped<T>(
        this IServiceCollection services, params Assembly[] assemblies)
    {
        IEnumerable<Type> types = assemblies.SelectMany(a => a.GetExportedTypes())
            .Where(c => c.IsClass && typeof(T).IsAssignableFrom(c));

        foreach (var item in types)
            services.AddScoped(item);
    }

Запуск:

 services.RegisterScoped<IInjectable>(typeof(IInjectable).Assembly);

1 Ответ

0 голосов
/ 01 августа 2020

Наконец, я обнаружил проблему:

Мне пришлось использовать IDataProtectionProvider вместо IDataProtector в моем конструкторе служб

...