在web api 2中没有使用尾部斜杠触发路由

时间:2017-05-23 15:10:27

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

这是我的路线配置:

 config.Routes.MapHttpRoute(
                name: "Public",
                routeTemplate: "{dept}/{unit}/",
                defaults: new
                {                    
                    controller = "Home",
                    action = "Index"                
                },
               constraints: new { constraint = new MyConstraint() }

            );

当我输入网址时:

mysite.com/XYZ/123

然后我的约束类被触发

但是当我使用时:

带有附加斜杠的

mysite.com/XYZ/123/不会触发约束类。

我使用Web Api 2。

在routeTemplate中,我可以在末尾使用“/”,但不会产生差异。

为什么不起作用?

更新

public class HomeController : ApiController
{

[HttpGet]
public HttpResponseMessage Index()
{

}

}

1 个答案:

答案 0 :(得分:0)

我已经更新了我的回答:

尝试属性路由:

[RoutePrefix("dept")]
 public class DepartmentController : ApiController
{
   [Route("unit:int:min(1)"}]
   public object Unit() {}
}

可以像上面那样设置约束。更多:

https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#constraints