我的 Web.API 路由有问题。我有以下两条路线:
config.Routes.MapHttpRoute(
name: "MethodOne",
routeTemplate: "api/{controller}/{action}/{id}/{type}",
defaults: new { id = RouteParameter.Optional, type = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "MethodTwo",
routeTemplate: "api/{controller}/{action}/{directory}/{report}",
defaults: new { directory = RouteParameter.Optional, report = RouteParameter.Optional }
);
在我的控制器中,这两种方法:
[HttpGet]
[ActionName("methodone")]
public string MethodOne(string id, string type)
{
return string.Empty;
}
[HttpGet]
[ActionName("methodtwo")]
public string MethodTwo(string directory, string report)
{
return string.Empty;
}
这两个人似乎不能并存。如果我在 WebApiConfig 中注释掉 MethodOne 路由,则 MethodTwo 路由有效。评论 MethodTwo 路线允许 MethodOne 工作。不加注释,MethodOne 有效,但 MethodTwo 无效。
我希望对这两种方法都使用一条路线,然后似乎它们必须具有相同的参数名称。谁编写具有通用参数名称的方法?坏的。我真的不希望我的方法具有相同的参数名称(如 p1、p2、p3),所以我想我可以为新方法创建一个路由。但即使这样似乎也行不通。
我真的很想念WebGet(UriTemplate="")
来自 WCF 的休息。
我有一个控制器,它有很多方法,有些有 1、2、3 甚至更多参数。我不敢相信我不能在 MapHttpRoute 方法中使用有意义的参数名称。
我可以完全注释掉这些东西并使用WebGet()
……但在我到达那里之前,我想看看我是否遗漏了一些东西。