Get和Post方法在Web API Controller中不起作用

时间:2014-03-24 10:38:11

标签: c# asp.net-mvc asp.net-web-api

我的控制器中有一个POST方法可以正常工作。我想在同一个控制器中包含一个方法来获取记录列表。我无法获得记录。如果我在不同的控制器中编写GET方法,它可以正常工作,但是当我在现有控制器中包含相同的方法时,它会给出错误“无法加载资源:服务器响应状态为405(方法不允许)”。这是我的控制器的代码:

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 }
);

这里出了什么问题?

2 个答案:

答案 0 :(得分:0)

将Post方法重命名为“Post”,两种方法都应该有效。

如果没有另外配置,WebApi应该具有以名为Get / Post等的方法类型命名的动作

答案 1 :(得分:0)

您的路线似乎不允许使用isRegistered参数,而是需要id参数。

尝试将路由代码更改为:

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