2012-04-17 99 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

相關問題