62,243
社区成员




actionContext.Request.Content.ReadAsAsync<User>().Result
,在筛选器中我是这样读取的,
[Route("UpdateUserInfo")]
public Response UpdateUserInfo(UpdateUserInfoModel model)
{
//执行到这里 model为null
}
actionContext.Request.Content.ReadAsAsync<User>().Result
也就是这一句,结果是
base.OnAuthorization(actionContext);
Request.form 提交的字符的,即是以文本形式传输 Request.BinaryRead 获取二进制数据流 而你在接收数据的时候只能任选其中一种,就是说,使用这两种不能混用。 但可以用Request.QueryString("参数")或者在BinaryRead 之前将参数 Requst参数传给变量 这两种办法做些变通。
request.InputStream.Position = 0;
StreamReader sr = new StreamReader(request.InputStream);
string content = sr.ReadToEnd();
user = JsonConvert.DeserializeObject<User>(content);
按照你的方式,我把代码改成了这样, 这样的确可以 HttpContext.Current.Request.InputStream.Position = 0;
StreamReader sr = new StreamReader(HttpContext.Current.Request.InputStream);
string content = sr.ReadToEnd();
user = JsonConvert.DeserializeObject<User>(content);
这样也是可以的
虽然问题解决了,但是为啥呢 ?和之前的读取输入流的方式有啥不同 ? 刚接触web api不久,对很多还是不了解