ASP.NET Core не может перейти на метод конечной точки? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть контроллер 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 просто проверяет права пользователя на подключение к конечной точке, он также работает нормально (я тоже могу перехватить его, и он покидает фильтр в условиях успеха).

1 Ответ

0 голосов
/ 17 ноября 2018

Как предположил @mjwills, я должен был быть немного более осторожным, отвергая то, что могло или не могло вызывать такое поведение.Я думал, что понял, как должен действовать фильтр действий, и поскольку он, казалось, делал то, что хотел, я знал , что это не проблема ... но на самом деле это было.

Удаление всех возможных виновников и методичное добавление их обратно ... иногда это единственный способ найти проблему.

...