【问题标题】:Setup of WebApiConfig.cs -WebApiConfig.cs 的设置 -
【发布时间】:2017-06-28 19:48:47
【问题描述】:

我的 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 指定要使用哪个控制器,因为最后一个条目具有三个参数,它永远不会被选择,而中间一个会。

例如,我想要以下 URL 来调用我指定的控制器:

http://myserver/api/UserLogin/AS/1234
http://myserver/api/BinQuery/AS/1234/ABC123
http://myserver/api/BarcodeQuery/AS/1234/3424532543

希望这有点清楚我想要实现的目标。

【问题讨论】:

  • 他们有相同的模板。您必须决定如何将一个与另一个区分开来。

标签: c# asp.net-web-api2 asp.net-web-api-routing


【解决方案1】:

它们具有相同的路由模板,因此存在路由冲突。

您必须决定如何将一个与另一个区分开来。

如果这些路由属于特定控制器,则使用它作为区分因素。

您还希望在更一般的路线之前出现更具体的路线。因此,将 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 }
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-07
    • 2017-05-13
    • 1970-01-01
    • 2016-08-05
    • 2019-07-06
    • 2021-12-13
    • 2018-11-06
    • 1970-01-01
    相关资源
    最近更新 更多