Fiddler对.net mvc控制器的帖子请求返回404

时间:2015-10-23 13:10:18

标签: json asp.net-mvc http fiddler

我有控制器

    [HttpGet]
    public IHttpActionResult GetUserRights(int id)
    {
        var rights = _rightsService.GetUserRights(id);
        if (rights == null)
        {
            return new HttpActionResult(HttpStatusCode.BadRequest, "User not found");
        }
        return Ok(rights);
    }

    [HttpPost]
    public IHttpActionResult SetUserRights(int id, IEnumerable<EditRightViewModel> rights)
    {
        Result result = _rightsService.SetUserRights(id, rights);
        if (!result.IsSuccess)
        {
            return new HttpActionResult(HttpStatusCode.InternalServerError, result.Message);
        }
        return Ok(result.Data);
    }

    [HttpPost]
    public IHttpActionResult SetUserRights(int id, int RightId, bool Enable)
    {
        Result result = _rightsService.SetUserRights(id, new List<EditRightViewModel>
        {
            new EditRightViewModel
            {
                RightId = RightId,
                Enable = Enable
            }
        });
        if (!result.IsSuccess)
        {
            return new HttpActionResult(HttpStatusCode.InternalServerError, result.Message);
        }
        return Ok(result.Data);
    }

get请求正常,但帖子返回404。 请求是

User-Agent: Fiddler
Host: localhost:577
Content-Length: 44
Content-Type: application/json; charset=utf-8
{
"id":1,
"RightId":1,
"Enable":"true"
}

最初我想将数据发送到具有列表作为参数的post动作。我认为它返回404的原因是json不适合函数的参数。所以我简化了json和动作参数,但它仍然没有奏效。也许有人可以告诉问题的原因以及如何编写一个正确的json来发送列表作为参数?

2 个答案:

答案 0 :(得分:0)

404错误主要发生在您的方法签名与.数据不匹配或路由配置不正确时。

在这里查看我的答案 - Webservice return 404

我会改变Method签名来接受一个类。

POST

答案 1 :(得分:0)

Post Actions在body中不能包含大多数参数。 使用您需要的参数创建一个类。 ASP NET将进行绑定。

public IHttpActionResult SetUserRights(Right right){ /* ... */ }

public class Right {
    public int id { get; set; }
    public int RightId { get; set; }
    public bool Enable { get; set; }
}

试试这个。