Маршрутизация отвечает за сопоставление URL-адреса запроса с конечной точкой, и она поставляется с двумя типами маршрутизации Обычная и Атрибуты.
И, исходя из вашего вопроса, вы ожидаете обычной маршрутизации с маршрутизацией по умолчанию, которой вы можете достичь. NET CORE с использованием приведенной ниже строки кода.
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Search}/{action}/{id?}");
});
Примечание: Но имейте в виду, что конвективная маршрутизация не будет работать, если вы украсите свой контроллер атрибутом [ApiController].
По умолчанию. NET CORE поддерживает маршрутизацию атрибутов, поэтому вы должны поставить префикс маршрута, поместив атрибут [Route] на уровень контроллера. Ниже приведен пример
[Route("api/[controller]")]
[ApiController]
public class SearchController : ControllerBase
{
[HttpGet("{company}")]
public IActionResult Get(string company)
{
return Ok($"company: {company}");
}
[HttpGet("{country}/{program}")]
public IActionResult Get(string country, string program)
{
return Ok($"country: {country} program: {program}");
}
}
Приведенный выше код будет работать так, как вы ожидаете (маршрутизация атрибутов).
Если вы декорируете свой контроллер атрибутом [ApiController], вам придется использовать маршрутизацию атрибутов. и любая обычная маршрутизация, определенная в классе запуска, будет переопределена. Пожалуйста, смотрите более подробную информацию здесь .