我在ASP Core中配置路由时遇到问题。
在Startup.cs
我使用了默认配置:services.AddMvc()
中的ConfigureServices()
和app.UseMvc()
中的Configure()
。
现在我在同一个程序集中有一个简单的控制器:
[Route("/api/[controller]")]
public class TestController: Controller
{
[HttpGet]
public string Test()
{
return "Hello";
}
}
请求/api/test/test
不会触发
但如果我添加[HttpGet("test")]
或[Route("test")]
,则效果会很好。
但是,如果未指定路由属性
,我希望支持约定优于配置答案 0 :(得分:3)
尝试使用:
[Route("api/[controller]/[action]")]
答案 1 :(得分:0)
向Controller添加[Route("/api/[controller]")]
注释时,Startup.cs
中配置的默认路由将忽略此控制器。
因此,您需要在控制器内为每个操作指定网址后缀,方法是在其上方添加[Route("")]
属性:
[Route("/api/[controller]")]
public class TestController: Controller
{
[Route("test")]
[HttpGet]
public string Test()
{
return "Hello";
}
}
或在Controller annotaion中指定路由应使用操作名称作为网址的一部分:
[Route("/api/[controller]/[action]")]
public class TestController: Controller
{
[HttpGet]
public string Test()
{
return "Hello";
}
}
答案 2 :(得分:0)
[Route("/api/[controller]")]
public class TestController: Controller
{
[HttpGet(namOf(Test),Name=namOf(Test))]
public string Test()
{
return "Hello";
}
}