2014-03-24 52 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

相关问题