C# Content.ReadAsAsync始终提供空值
我在使用C# Content.ReadAsAsync始终提供空值,c#,asp.net-web-api,C#,Asp.net Web Api,我在使用Content.ReadAsAsync阅读同意书时遇到问题。 看看我的代码 private HttpResponseMessage _responseMessage; _responseMessage = UnitTestHelper.Get(string.Format("api/StudentController/Get/?StartDate={0}&EndDate={1}", DateTime.Now, DateTime.Now)); Assert.IsTrue(_respo
Content.ReadAsAsync
阅读同意书时遇到问题。
看看我的代码
private HttpResponseMessage _responseMessage;
_responseMessage = UnitTestHelper.Get(string.Format("api/StudentController/Get/?StartDate={0}&EndDate={1}", DateTime.Now, DateTime.Now));
Assert.IsTrue(_responseMessage.IsSuccessStatusCode);
Assert.IsTrue(_responseMessage.Content.ReadAsAsync<List<StudentModel>>().Result.Count > 0);
var auditData = _responseMessage.Content.ReadAsStringAsync().Result;
_responseMessage.Content.ReadAsAsync<List<StudentModel>>().Result;
_responseMessage.Content.ReadAsAsync<List<StudentModel>>().Result;
\u responseMessage.Content.ReadAsAsync().Result;
为什么??这里怎么了?问题是您调用了两次
\u responseMessage.Content.ReadAsAsync()
。您应该将结果存储在某个变量中,然后使用它
var result = _responseMessage.Content.ReadAsAsync<List<StudentModel>>().Result;
Assert.IsTrue(result.Count > 0);
//do whatever needed with result
var result=\u responseMessage.Content.ReadAsAsync().result;
Assert.IsTrue(result.Count>0);
//做任何需要做的事都会有结果
另外,您最好使用async/await
而不是调用。Result
更具体地说,
ReadAsAsync
使用内部的HttpContent.readastreamasync
缓存内存流,一旦读取位置
就停留在流的末尾。问题是您调用了\u responseMessage.Content.readasync()
两次。您应该将结果存储在某个变量中,然后使用它
var result = _responseMessage.Content.ReadAsAsync<List<StudentModel>>().Result;
Assert.IsTrue(result.Count > 0);
//do whatever needed with result
var result=\u responseMessage.Content.ReadAsAsync().result;
Assert.IsTrue(result.Count>0);
//做任何需要做的事都会有结果
另外,您最好使用async/await
而不是调用。Result
更具体地说,
ReadAsAsync
使用内部的HttpContent.readastreamasync
缓存内存流,一旦读取Position
就停留在流的末尾。看看这里,你的问题让人困惑。如果前缀对象为null
,如何访问Result.Count
?请再次查看问题。更新了。@immirza,ReadAsStringAsync
格式不是JSON格式,而是经过JSON编码的字符串,因此使用斜杠。这意味着返回数据的是一个JSON格式的字符串,而不是JSON。你明白吗?显示映射到您正在调用的url的操作。请查看此处,您的问题令人困惑。如果前缀对象为null
,如何访问Result.Count
?请再次查看问题。更新了。@immirza,ReadAsStringAsync
格式不是JSON格式,而是经过JSON编码的字符串,因此使用斜杠。这意味着返回数据的是一个JSON格式的字符串,而不是JSON。你明白吗?显示映射到正在调用的url的操作。