ASP核心中的路由配置

时间:2016-04-10 20:01:36

标签: c# asp.net-core

我在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")],则效果会很好。

但是,如果未指定路由属性

,我希望支持约定优于配置

3 个答案:

答案 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";
    }
 }