MediatR 3.0.1 возможная ошибка? Не удается заставить работать IAsyncRequestHandler

Я получаю следующее сообщение об ошибке при выполнении IRequest с IAsyncRequestHandler.

System.InvalidOperationException: 'No service for type 'MediatR.IRequestHandler`2[TestProject.Domain.Requests.Users.CreateUserRequest,TestProject.Domain.Requests.Users.CreateUserResponse]' has been registered.'

Вот как я регистрирую его в классе запуска

// Add framework services.
services.AddMvc();
services.AddMediatR(typeof(CreateUserRequest).GetTypeInfo().Assembly);

CreateUserRequest и Ответ

public class CreateUserRequest : IRequest<CreateUserResponse>
{
    public string EmailAddress { get; set; }
    public int OrganisationId { get; set; }
    public string Password { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class CreateUserResponse
{
    public int UserId { get; set; }
    public string EmailAddress { get; set; }
}

Обработчик запросов

public class CreateUserRequestHandler : IAsyncRequestHandler<CreateUserRequest, CreateUserResponse>
{
    private readonly UserManager<User> _userManager;


    public CreateUserRequestHandler()
    {

    }

    public async Task<CreateUserResponse> Handle(CreateUserRequest request)
    {
        //create the user and assign it to the organisation
        var user = new User
        {
            Email = request.EmailAddress,
            OrganisationUsers = new List<OrganisationUser> { new OrganisationUser { OrganisationId = request.OrganisationId } }
        };

        //create new user with password.
        await _userManager.CreateAsync(user, request.Password);

        //create response.
        var response = new CreateUserResponse{UserId = user.Id, EmailAddress = user.Email};

        return response;
    }
}

Класс контроллера

public class UserController : Controller
{
    private readonly IMediator _mediator;

    public UserController(IMediator mediator)
    {
        _mediator = mediator;
    }

    [HttpPost]
    public async Task<CreateUserResponse> Post(CreateUserRequest request)
    {
        return await _mediator.Send(request);
    }
}

ошибка происходит внутри класса контроллера, он не попадает в обработчик асинхронных запросов.

Что-то не так с регистрацией DI? Я посмотрел на примеры, но не смог найти ничего конкретного для ядра aspnet.

0 ответов

Другие вопросы по тегам