2014-03-24 77 views
0

我在我的控制器中有一個POST方法,工作正常。我想在同一個控制器中包含更多的方法來獲取記錄列表。我無法獲得記錄。如果我在另一個控制器中編寫GET方法,它工作正常,但是當我在現有的控制器中包含相同的方法時,它會發出錯誤「無法加載資源:服務器響應狀態爲405(方法不允許)」。這裏是我的控制器代碼:Get和Post方法不能在Web API控制器中工作

using MyApp.Entity.Models; 
using Newtonsoft.Json.Linq; 
namespace MyApp.Server.Controllers 
{ 
[RoutePrefix("api/dashboard")] 
    public class MembersController : BaseAppController 
    { 
     public MembersController() 
     { 
     } 
     public MembersController(HttpContext current) 
     { 
      HttpContext.Current = current; 
     } 
     [AllowAnonymous] 
     public string PostMemberDetails(JObject memberData) 
     { 
     //My code here 
     } 
     [AllowAnonymous] 
     public List<MyApp.Entity.Models.registeredmembers> Get(bool isRegistered) 
     { 
     //My code here 
     } 
    } 
} 

這是路由的配置代碼:

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

這是怎麼回事錯在這裏?

+0

你試過指定'[HTTPGET]'屬性get方法? – Nilesh

+0

是的。我也嘗試過。 – user1640256

+0

你可以分享你的請求網址是哪些你看到這個問題?我懷疑你的基本控制器中定義了一些動作,當它與你的派生控制器的動作相結合導致路由問題。 –

回答

0

將Post方法重命名爲「Post」,並且這兩種方法都應該有效。

如果沒有其他的配置,應該的WebAPI有命名爲方法類型的命名動作GET/POST等

+0

仍然不能正常工作... – user1640256

0

您的路線似乎並沒有允許isRegistered參數和預計的id參數來代替。

嘗試更改路由代碼:

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{isRegistered}", 
    defaults: new { isRegistered = RouteParameter.Optional } 
); 
+0

在我的控制器的方法中,我將Get(bool isRegistered)更改爲Get(int id),但結果相同。 – user1640256

相關問題