路由匹配需要参数名称匹配。因此,下面将匹配任何操作与单个参数fileid。但是,不匹配任何具有不同名称的单个参数的操作。因此,我有另一个采用单个参数sessionid的操作路由。
第二条路线不起作用,只宣布第一条路线。这让我感到困惑:我理解匹配在找到的第一个匹配时停止,但如果它与第一个参数名称不匹配,那么肯定匹配不已找到并且匹配应该继续吗?但事实并非如此。
config.Routes.MapHttpRoute(
name: "DownloadUrl",
routeTemplate: "api/{controller}/{action}/{fileid}"
);
config.Routes.MapHttpRoute(
name: "Queue",
routeTemplate: "api/{controller}/{action}/{sessionid}"
);
我可以使用单一路线并调用我的参数A,B,C ......基本上将它们命名为序数位置。
config.Routes.MapHttpRoute(
name: "DownloadUrl",
routeTemplate: "api/{controller}/{action}/{A}"
);
但这是可怕的代码所以我认为我不太了解路由。我如何表达这两条路线?
答案 0 :(得分:0)
实验表明,显式命名与默认值相结合可以解决这个问题:
config.Routes.MapHttpRoute(
name: "Authenticate",
routeTemplate: "api/{controller}/Authenticate/{email}/{password}",
defaults: new { action = "Authenticate" }
);
config.Routes.MapHttpRoute(
name: "UploadedBytes",
routeTemplate: "api/{controller}/UploadedBytes/{sessiondId}/{fileid}",
defaults: new { action = "UploadedBytes" }
);