2013-01-03 76 views
1

我在我的web項目中實現了AttributeRouting和WebApi。 我嘗試將http://localhost/apis/test?adminId=yyy之類的網址路由到GetSomeInfo操作。但我遇到了一些麻煩,網址http://localhost/apis/testhttp://localhost/apis/test?adminId=yyy都轉到行動GetEntity。它似乎不承認參數adminId,它認爲在url中沒有參數。所以事實證明去GetEntity行動。誰能幫我?謝謝。WebAPI Url match問題

我到目前爲止所做的工作如下所示,它不起作用。

[RoutePrefix("apis/test")] 
public class SampleController : ApiController 
{ 


    [HttpGet] 
    [GET("")] 
    public string GetEntity([FromUri]string name = null, [FromUri]string id = null) 
    { 
     .... 
    } 

    [HttpGet] 
    [GET("")] 
    public string GetSomeInfo([FromUri]string adminId) 
    { 
     .... 
    } 

} 

被修改

global.asax的路線地圖代碼如下。並且我發現Url http://localhost/api/Sample?adminId=2BD48CF9-95EB-48D2-A1B2-1AFA273E586D可以路由到GetSomeInfo操作。沒有任何參數的網址http://localhost/api/Sample路由到GetEntity。這正是我想要的。我的問題是爲什麼RoutePrefixFromUri不起作用?

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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


      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Login", action = "Login", id = UrlParameter.Optional } 
      ); 
+0

什麼問題?你有錯誤嗎? – k0stya

+0

@ k0stya抱歉錯誤的東西。我更新了我的帖子。 –

回答

1

因爲,您需要在global.asax.cs中定義更多路由。看到這個,Single controller with multiple GET methods in ASP.NET Web API

+0

嗨,Pitchai,首先請檢閱我更新的帖子。在我的應用程序中,我使用RoutePrefix來匹配url。似乎你提到的解決方案不在我的情況。謝謝。 –

+0

然後,可以將路由約束添加到GetSomeInfo方法,如下所示:[GET(「url/{id}」)]。現在這將回應,/ url/1(通過GET) –

+0

謝謝,但在我的問題中,我不知道如何迴應'/ url?1'。是否有可能做到這一點? –