Я создаю смешанное приложение asp.net, которое имеет контроллер mvc и контроллер веб-API.Я прочитал документы, но не могу получить соответствие по умолчанию для контроллеров веб-API.
Вот мои сопоставленные маршруты:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
app.UseMvc(routes =>
{
routes.MapRoute(
name: "api default",
template: "api/{controller}/{id?}");
});
app.UseMvc(routes =>
{
routes.MapRoute(
name: "api actions",
template: "api/{controller}/{action}/{id?}");
});
Вот действие, которое не соответствует и возвращает HTTP 500:
[HttpGet("{id:int}")]
public IActionResult Get(int id)
{
try
{
//EF Core statement that returns data is here
return Ok(data);
}
catch(Exception ex)
{
return BadRequest();
}
}
Это соответствует отлично:
[Route("ProjectRoles/{id:int}")]
[HttpGet("{id:int}")]
public IActionResult ProjectRoles(int id)
{
try
{
//EF Core that gets data
if (data == null)
return NotFound(id);
else
return Ok(data.ProjectRoles);
}
catch (Exception ex)
{
return BadRequest();
}
}