Ядро WebAPI возвращает внутреннюю ошибку сервера с асинхронными контроллерами - PullRequest
0 голосов
/ 10 октября 2019

У меня есть простой репозиторий, и каждый раз, когда я пытаюсь вызвать его, он не работает, он работает, если я удаляю async, у меня никогда не было этой проблемы раньше. Вот что я сделал.

Контроллер регистра имеет HttpPost Это означает, что я пытаюсь выполнить POST, и он работает, только если я удаляю async из метода.

РегистрМодель:

    public string Email { get; set; }
    public string User { get; set; }
    public string Password { get; set; }

Я использую POSTMAN для тестирования API:

  1. Заголовки - Content-type/application/json
  2. Тело:

    { "Email":"someemail@outlook.com", "User":"Someuser", "Password":"00000000" }

URL: http://localhost:57326/api/Register/Register

Логика:

public interface IRegister
{
    Task<int> Register(RegisterModel register); 
}

[Produces("application/json")]
[Route("api/[controller]")]
[ApiController]
public class RegisterController : ControllerBase
{
    public IRegister register { get; set; }
    public RegisterController(IRegister Register)
    {
        this.register = Register;
    }

    [HttpPost("Register")]
    //[Authorize(Roles = "Host")]
    public async Task<IActionResult> Register(RegisterModel model)
    {
        var result = await register.Register(model);
        if(result > 0)
        {
            return Ok();
        }
        else
        {
            return BadRequest();
        }
    }
}

enter image description here

Как показано на рисунке, он возвращает внутреннюю ошибку 500 С задачей async в методе действия, удаляя их. Вызов (POST) продолжается.

1 Ответ

0 голосов
/ 11 октября 2019

Я не уверен, что вы имели в виду, удалив async, потому что в вашем методе есть await.

Я подозреваю, что происходит, когда вы удаляете_ async _and_other_things, которые контроллер возвращает до того, как .Register сделает работу.

Я предлагаю добавить try { } catch (Exception ex ) { } внутри метода контроллера (с async 'version') и выполнение POST и проверка исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...