Рассмотрим действие контроллера следующим образом:
[HttpGet]
[Route("blog/{slug}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<Blog> Get(string slug)
{
return await Task.Run(() =>
{
var model = Data.GetBlog(slug);
if (model == null)
{
return NotFound();
}
return Ok(model);
});
}
Я получаю сообщение об ошибке для каждого из возвращаемых значений:
Cannot implicitly convert type 'Microsoft.AspNetCore.Mvc.NotFoundResult' to 'System.Threading.Tasks.Task'
Cannot implicitly convert type 'Microsoft.AspNetCore.Mvc.OkObjectResult' to 'System.Threading.Tasks.Task'
Cannot convert lambda expression to intended delegate type because some of the return types in the block are not implicitly convertible to the delegate return type
Если я закомментирую один из типов ответа (поэтому имеет только NotFound()
или только Ok()
), он прекрасно компилируется.
Я думал, что оба наследуют один и тот же базовый класс и поэтому оба могут использоваться в одном действии.
Где я иду не так?
ps Задача. Запуск - я ленива, пока не напишу асинхронные Data
методы.