У меня есть контроллер API с методом, подобным так:
[HttpGet]
[Route("~/api/groups/{groupId}/feeds/{feedItemId}/flag")]
[FeedItemAccess(AccessLevelTypes.GroupMember, "groupId")]
public async Task<IActionResult> FlagFeedItem([FromRoute] int groupId, [FromRoute] long feedItemId)
{
try
{
await _feedManagementService.FlagMessage(groupId, feedItemId);
return Ok();
}
catch (Exception ex)
{
_logger.LogError(ex, "FlagFeedItem(int)");
return new OopsResult(ex);
}
}
Я поставил точки останова в строке await
и в строке _logger
.Затем я использую свой REST-клиент для достижения указанной конечной точки (http://myhost/api/groups/1/feeds/1/flag) в режиме отладки.
. Я немедленно получаю пустой 200 ответ ... но метод await никогда не срабатывает, и при этомсервис ниже, и я никогда не достигаю точки останова (ов). Я ломаю голову над этим. Я думаю, что это была проблема взаимоблокировки потока, но для факта, что он на самом деле возвращает код состояния 200.
В чем может быть проблема? Маршрутизация кажется правильной, я могу перехватить конструктор контроллера, все выглядит хорошо ... но когда он попадает сюда, система просто решает, что на самом деле ничего делать не нужно.
Кстати, фильтр FeedItemAccess
просто проверяет права пользователя на подключение к конечной точке, он также работает нормально (я тоже могу перехватить его, и он покидает фильтр в условиях успеха).