WebApiConfig.cs 的设置 -
Setup of WebApiConfig.cs -
我的 WebApiConfig.cs 文件中有以下内容:
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "UserLogin",
routeTemplate: "api/{controller}/{UserInitials}/{UserPin}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "BinQuery",
routeTemplate: "api/{controller}/{UserID}/{UserCode}/{BinCode}",
defaults: new { id = RouteParameter.Optional }
);
//This one below does not work as one above is always taken first!!
config.Routes.MapHttpRoute(
name: "BarcodeQuery",
routeTemplate: "api/{controller}/{UserID}/{UserCode}/{BarCode}",
defaults: new { id = RouteParameter.Optional }
);
我希望能够通过调用的 URL 指定要使用的控制器,因为最后一个条目有三个参数,它永远不会被选择,中间的一个会。
例如,我希望以下 URLs 调用我指定的控制器:
http://myserver/api/UserLogin/AS/1234
http://myserver/api/BinQuery/AS/1234/ABC123
http://myserver/api/BarcodeQuery/AS/1234/3424532543
希望这对我想要实现的目标有所了解。
它们具有相同的路由模板,因此存在路由冲突。
您必须决定如何将两者区别开来。
如果这些路由属于特定控制器,则将其用作区分因素。[=13=]
您还希望更具体的路线先于更一般的路线。因此,将 UserLogin
路由放在最后,因为在其模板中使用了 {controller}
占位符
config.Routes.MapHttpRoute(
name: "BinQuery",
routeTemplate: "api/BinQuery/{UserID}/{UserCode}/{BinCode}",
defaults: new { controller = "BinQuery" }
);
config.Routes.MapHttpRoute(
name: "BarcodeQuery",
routeTemplate: "api/BarcodeQuery/{UserID}/{UserCode}/{BarCode}",
defaults: new { controller = "BarcodeQuery" }
);
config.Routes.MapHttpRoute(
name: "UserLogin",
routeTemplate: "api/{controller}/{UserInitials}/{UserPin}",
defaults: new { id = RouteParameter.Optional }
);
我的 WebApiConfig.cs 文件中有以下内容:
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "UserLogin",
routeTemplate: "api/{controller}/{UserInitials}/{UserPin}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "BinQuery",
routeTemplate: "api/{controller}/{UserID}/{UserCode}/{BinCode}",
defaults: new { id = RouteParameter.Optional }
);
//This one below does not work as one above is always taken first!!
config.Routes.MapHttpRoute(
name: "BarcodeQuery",
routeTemplate: "api/{controller}/{UserID}/{UserCode}/{BarCode}",
defaults: new { id = RouteParameter.Optional }
);
我希望能够通过调用的 URL 指定要使用的控制器,因为最后一个条目有三个参数,它永远不会被选择,中间的一个会。
例如,我希望以下 URLs 调用我指定的控制器:
http://myserver/api/UserLogin/AS/1234
http://myserver/api/BinQuery/AS/1234/ABC123
http://myserver/api/BarcodeQuery/AS/1234/3424532543
希望这对我想要实现的目标有所了解。
它们具有相同的路由模板,因此存在路由冲突。
您必须决定如何将两者区别开来。
如果这些路由属于特定控制器,则将其用作区分因素。[=13=]
您还希望更具体的路线先于更一般的路线。因此,将 UserLogin
路由放在最后,因为在其模板中使用了 {controller}
占位符
config.Routes.MapHttpRoute(
name: "BinQuery",
routeTemplate: "api/BinQuery/{UserID}/{UserCode}/{BinCode}",
defaults: new { controller = "BinQuery" }
);
config.Routes.MapHttpRoute(
name: "BarcodeQuery",
routeTemplate: "api/BarcodeQuery/{UserID}/{UserCode}/{BarCode}",
defaults: new { controller = "BarcodeQuery" }
);
config.Routes.MapHttpRoute(
name: "UserLogin",
routeTemplate: "api/{controller}/{UserInitials}/{UserPin}",
defaults: new { id = RouteParameter.Optional }
);