我有一个简单的问题。我正在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
是像你的类这样复杂类型的默认行为。