ASP.NET WebApi 4 Post FromBody Not Binding From JSON



我有一个简单的问题。我正在ASP中构建HTTP REST服务。. NET WebApi 4和我有一些麻烦让我的模型绑定工作。

我使用以下代码来接受POST HTTP请求并处理登录。从我可以收集ASP。NET WebApi 4将为您反序列化JSON并绑定到可接受的模型。我已经设置了我的模型,但是每当我通过调试器测试服务时,我都会在UserPostData对象上得到一个nullreferenceexception。

据我所知,我所有的设置都是正确的,但它就是不工作。下面是我的JSON,我张贴。有人知道为什么我得到这个错误吗?

JSON[{"用户名":"mneill","密码":"12345"})

WebApi 4控制器类代码

public class UserPostData
{
    public string Username { get; set; }
    public string Password { get; set; }
}
public class UserController : ApiController
{
    //
    // GET: /User/
    public string[] Get(string username)
    {
        return new string[]
        {
            "username",
            username
        };
    }
    public HttpResponseMessage Post([FromBody] UserPostData body)
    {
        //string username = postData.Username;
        //string password = postData.Password;
        HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
        if (body.Username == null)
            response.StatusCode = HttpStatusCode.NotFound;
        if (body.Password == null)
            response.StatusCode = HttpStatusCode.NotFound;
        return response;
    }
}

确保在请求中出现Content-Type头。

将Json修改如下:

{ "Username": "mneill", "Password": "12345" }

并在Post操作中添加以下代码,以查看任何模型绑定错误:

if (!ModelState.IsValid)
        {
            throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, this.ModelState));
        }

我不知道这是否只是您的格式,但您当前的JSON表示数组包含一个类型为UserPostData的元素。如果是这样,请将请求改为发送对象而不是数组,或者将控制器更改为支持数组。

我想FromBody是像你的类这样复杂类型的默认行为。

最新更新