2012-04-17 102 views
0

我定义的路由的网络API如下是否可以定义接受文字的Web Api路由?

routes.MapHttpRoute(
       name: "SearchApi", 
       routeTemplate: "api/search/{controller}-{seopath}", 
       defaults: new { seopath = RouteParameter.Optional } 
      ); 

      routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 

然而,当我从Visual Studio运行它,并去http://localhost:50356/api/search/jobs-in-Bangalore我得到404错误消息“没有类型被发现,命名为“控制器匹配乔布斯的“。

在这本书中,专业的Asp.Net MVC 1.0,第207页{title} - {author}是作为一个有效的路由url被提供的,那么为什么它将“jobs-in”解释为控制器而不是“jobs” ?

回答

1

显然这场比赛是贪婪的。为什么不定义你的路线,如:

routeTemplate: "api/search/{controller}/{seopath}" 
+0

好,我们有其中URL的如“site.com/jobs-in-bangalore”被映射到特定的查询字符串AA特定的页面在旧web表单网站哈克的方式参数。例如“在班加罗尔的工作机会”将映射到“search.aspx?City = Bangalore”这些网址存在于搜索引擎结果中,所以支持这种格式将会很好。但似乎不可能以任何方式? – shashi 2012-04-17 20:48:02

+0

如果你想维护你现有的SEO URIs,你可以写一个自定义的路由限制(参见http://stephenwalther.com/blog/archive/2008/08/07/asp-net-mvc-tip-30-create-例如custom-route-constraints.aspx),或者你可以利用IIS的URL Rewrite(http://www.iis.net/download/urlrewrite)。就我个人而言,我会与自定义约束。 – 2012-04-17 21:02:29

相关问题