Как правильно создать сервис в Startup.cs? Не удалось создать экземпляр типа Error - PullRequest
0 голосов
/ 14 апреля 2019

Я получаю эту ошибку, когда конструктор посещается после POST (во время GET нет проблем).

{"Не удалось создать экземпляр типа 'MyWebsite.Website.Main.Areas.Identity.Pages.Account.LoginWith2faModel + IInputModel'. Связанные с моделью сложные типы не должны быть абстрактными или значениями идолжен иметь конструктор без параметров.

В моем StartUp.cs я явно включил Transient Service для интерфейса, создающего экземпляр InputModel. Я просто не могу понять, почему я получаю этоЭто потому, что в моем классе LoginWith2faModel определены и interface, и class?
Я спрашиваю об этом, потому что в другом проекте у меня есть настройки, аналогичные этой, и у меня не было проблем. Опять же, у меня есть конструкторкоторый берет interface, и я передаю конкретную реализацию interface этому классу и инициализирую его в конструкторе. Единственные различия между этим и этим - это DI ядра asp.net. Любая помощь очень ценится!

Startup.cs

services.AddTransient<LoginWith2faModel.InputModel>();
//previously I had the above set to:
//services.AddTransient<LoginWith2faModel.IInputModel,LoginWith2faModel.InputModel>();

LoginWith2faModel.cs

private readonly SignInManager<IdentityUser> _signInManager;
private readonly ILogger<LoginWith2faModel> _logger;
public LoginWith2faModel(SignInManager<IdentityUser> signInManager, ILogger<LoginWith2faModel> logger, IInputModel inputModel)
{
    _signInManager = signInManager;
    _logger = logger;
    Input = inputModel;
}

[BindProperty]
public IInputModel Input { get; set; }
public bool RememberMe { get; set; }
public string ReturnUrl { get; set; }
public interface IInputModel
{
    string TwoFactorCode { get; set; }
    bool RememberMachine { get; set; }
}

public class InputModel : IInputModel
{
    public string TwoFactorCode { get; set; }
    public bool RememberMachine { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...