假设我在控制器中有这些方法:
Get()
[HttpGet]
FindSomeone()
我有一个默认路由和一个带有操作的路由:routeTemplate: "api/{controller}/{action}"。
当我调用 /mycontroller/FindSomeone 时工作正常,但当我调用 GET /mycontroller/ 时失败并出现多个匹配路由错误。
有没有办法让默认路由只匹配 Get() 方法,并跳过 FindSomeone() 方法?
假设我在控制器中有这些方法:
Get()
[HttpGet]
FindSomeone()
我有一个默认路由和一个带有操作的路由:routeTemplate: "api/{controller}/{action}"。
当我调用 /mycontroller/FindSomeone 时工作正常,但当我调用 GET /mycontroller/ 时失败并出现多个匹配路由错误。
有没有办法让默认路由只匹配 Get() 方法,并跳过 FindSomeone() 方法?
在这种情况下,AttributeRouting 可能更适合您。它应该像用 Get Attribute 装饰这两个方法一样简单,
[RoutePrefix("mycontroller")
public class MyController
{
[GET("")]
Get()
[GET("FindSomeone")]
FindSomeone()
}
这将使这些方法可用作 mycontroller 和 mycontroller/FindSomeone。
Get
为主路由中的所有控制器声明默认操作
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional, action ="Get" }
);