WebApi忽略路径定义模板

时间:2016-07-24 20:01:30

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

我正在与WebApi路线的解决方案作斗争,因为路线模板中没有为令牌提供值,我希望将它们自动填充为默认值。

我的路线声明:

config.Routes.MapHttpRoute(
           name: "LandingPage Route",
           routeTemplate: "api/{version}/{controller}/{id}",
           defaults: new
           {
               controller = "LandingPageCommon",
               id = System.Web.Http.RouteParameter.Optional,
               version = ApiVersions.None,
               logging = true
           },
           constraints: new
           {
               version = new ApiVersionRouteConstraint()
           }
       //  handler: apiVersionHandler
       );

现在我通过Postman拨打2个电话:

1)按照预期工作(我给予了适当的实体)GET / api / v3 / LandingPageCommon / 886858

  • {version} - > V3
  • {controller} - > LandingPageCommon
  • {id} - > 886858

2)不适用于GET / api / LandingPageCommon / 886858

  • {version} - >没有提供,所以应采取形式'默认'来自声明 - > '无'
  • {controller} - > LandingPageCommon
  • {id} - > 886858

我已经创建了自定义RouteConstraint来保护{version}参数。在调试第二个电话时,我看到,路由令牌未正确设置({version} - > {controller}和{controller} - > {id}):

route parameters

在sime时间,我看到路线声明中的默认值:

route defaults

为什么第二次调用{version}未设置为默认值? 感谢

0 个答案:

没有答案