Ошибка перенаправления ядра asp.net с Ocelot (7.0.4) - PullRequest
0 голосов
/ 16 октября 2018
"ReRoutes": [
{
  "DownstreamPathTemplate": "/api/Agent/GetPagedAgents?page={page}",
  "DownstreamScheme": "http",
  "DownstreamHostAndPorts": [
    {
      "Host": "agent.api",
      "Port": 80
    }
  ],
  "UpstreamPathTemplate": "/api/account/user/list/GetPagedAgents?page={page}",
  "UpstreamHttpMethod": []

}]

Здесь я пытаюсь перенаправить мой UpstreamPathTemplate на DownstreamPathTemplate из строки запроса,

"http://accountmanagement/api/account/user/list/GetPagedAgents?page=1"

это моя строка запроса, которую я отправляю в службу управления учетной записью для перенаправления на мойслужба агента, использующая ocelot.

Это мой метод контроллера в службе агента для получения перенаправленного пути

    [HttpGet]
    [Route("GetPagedAgents")]
    [ProducesResponseType((int)HttpStatusCode.OK)]
    [ProducesResponseType((int)HttpStatusCode.BadRequest)]
    public IActionResult Get(string page, string pageSize, string filter, 
    string sortBy)
    {
        var Result = _agentServices.GetAll(Convert.ToInt32(page), 
Convert.ToInt32(pageSize),filter,sortBy);

          return Ok(Result);
    }

Но он не работает.В моем окне OUTPUT отображается сообщение: Невозможно найти нисходящий маршрут для пути: / api / account / user / list / GetPagedAgents, глагол: GET

, что означает, что здесь он принимает мой UpstreamPath как

 Upstream url path is /api/account/user/list/GetPagedAgents

здесь отсутствует параметр.

любая помощь будет оценена.Спасибо

1 Ответ

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

Вы пытались добавить атрибут [FromQuery]?

public IActionResult Get([FromQuery] string page, [FromQuery] string pageSize, [FromQuery] string filter, [FromQuery]string sortBy)
{
...
}

или создать простую модель

public class Request
{
   public string Page { get; set; }
   public string PageSize { get; set; }
   public string Filter { get; set; }
   public string SortBy { get; set; }
}

и использовать ее как

public IActionResult Get([FromQuery] Request request)
{
...
}
...