использовать маршрут исправления в asp. net core api - PullRequest
0 голосов
/ 09 июля 2020

Я конвертирую свой код в Asp. net core 3.1 в проекте веб-API. мой код похож на следующий:

введите описание изображения здесь

Когда я звоню http://localhost: 44307 / PersonDetails, я хотел бы получить «Result1», а когда я звоню http://localhost: 44307 / Person / 2207, я должен получать «result2».

Первый маршрут работает так, как я ожидал, но для второго я получаю 404. Он работает, если я звоню http://localhost: 44307 / PersonDetails / Person / 2207, но это не то, что я ожидал.

Спасибо, если бы вы мне помогли.

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Попробуйте, как показано ниже:

[HttpGet]
[Route("~/Person/{personId}")]
public ActionResult<Person> Get([FromQuery]int personId)
{
    return Ok("result2");
}

Когда вы добавите ~ перед ним, он проигнорирует атрибут маршрута на вашем контроллере.

0 голосов
/ 09 июля 2020
[Route("[controller]")]

когда вы используете маршрут на своих контроллерах, все дочерние действия будут использовать его. поэтому в этом случае, поскольку имя вашего контроллера PersonDetails, вы должны ввести имя контроллера в свои URL-адреса.

но вы можете использовать этот трюк:

step1: удалите эту строку:

[Route("[controller]")]

step2: добавьте PersonDetails к вашему методу Get

[Route("PersonDetails")]
Public ActionResult Get()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...