3

这是我的 global.asax(注册路线)

  routes.MapRoute("NewDatabase",
             "Server/{serverId}/Instances/{instanceId}/NewDatabase/",
             new { controller = "Server", action = "NewDatabase" }
             );

            routes.MapRoute(
           "Instance",
           "Server/{id}/Instances/{instanceId}/Databases",
           new { controller = "Server", action = "Databases", id = "id",instanceId="instanceId" }
           );

            routes.MapRoute(
           "Database",
           "Server/{id}/Instances",
           new { controller = "Server", action = "Instances", id = "id" }
           );

如果xyz.com/Server/12/Instance/1/NewDatabase将是服务器的重用 URL, Server/{serverId}/Instances/{instanceId}/NewDatabase/则将是匹配模式。我如何知道与上述请求匹配的条目?

谢谢

4

3 回答 3

7

RouteTable.Routes.GetRouteData(HttpContextBase)

于 2012-07-24T15:15:47.713 回答
1

安装RouteDebugger nuget 包并在 web.config 中启用它。这会告诉您哪些路线可以被击中以及为什么。

<add key="RouteDebugger:Enabled" value="true" />

您所要做的就是导航到您的网址。RouteDebugger 会将路由信息添加到页面底部。

于 2012-07-23T12:01:33.923 回答
0

我不确定这是否是您要查找的内容,但您可以创建自定义路由约束,以防止匹配路由,除非匹配某些自定义条件。

您可以实现 Match 方法,该方法返回一个布尔值。如果返回 false,则与约束关联的路由将与浏览器请求不匹配。此方法具有 RouteValueDictionary,因此您可以从那里检查路线值。

有关更多信息,请参阅此网址 - http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-a-custom-route-constraint-cs

于 2012-07-24T15:12:39.693 回答