使用属性路由,您可以在的route属性上使用波浪号(〜)Action
来覆盖的默认路由(Controller
如果需要):
[Route("api/[controller]")] public class AccountsController : Controller { [HttpPost] [Route("~/api/token")] //routes to `/api/token` public async TaskToken([FromBody]Credentials credentials) { ... } [HttpPost] [Route("users")] // routes to `/api/accounts/users` public async Task CreateUser([FromBody] userDto) { ... } }
对于ASP.NET Core,似乎~
不再需要波浪线符号(请参见接受的答案)以覆盖控制器的路由前缀-而是适用以下规则:
应用于/开头的动作的路径模板不会与应用于控制器的路径模板组合在一起。本示例匹配一组类似于默认路由的URL路径。
这是一个例子:
[Route("foo")] public class FooController : Controller { [Route("bar")] // combined with "foo" to map to route "/foo/bar" public IActionResult Bar() { // ... } [Route("/hello/world")] // not combined; maps to route "/hello/world" public IActionResult HelloWorld() { } }