[英]HTTP response before the request is complete
我已经构建了一个控制器,它必须进行许多 http 调用来组装响应。 使用邮递员进行测试。 当控制器进行第一次调用时,邮递员会收到回复。 我完全无法理解流程:
[HttpGet("")]
[ProducesResponseType(200)]
[ProducesResponseType(400)]
public async Task<IActionResult> GetPackageAsync()
{
var filepackagesresp = aClient.GetPackageDetailsAsync();
return Ok(filepackagesresp.ToString());
}
此控制器正在调用以下方法
public async Task<Package> GetPackageDetailsAsync()
{
var packageresp = await httpClient.GetAsync(serviceurl);
// At this point POSTMAN receives a response
packageresp.EnsureSuccessStatusCode();
var packageResponse = JsonConvert.DeserializeObject<GetPackageResponse>
(await packageresp.Content.ReadAsStringAsync());
var packagepropertiesresp = await httpClient.GetAsync(serviceurl);
.....
there are more calls like this
......
邮递员在响应中显示 200 OK 和以下内容
"System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[namespace.Package,System.Runtime.CompilerServices.IAsyncStateMachine]"
对这种行为有什么解释吗?我能做些什么来调试它? 提前感谢任何调查它的人
目前,控制器正在将任务转换为字符串并返回。 您的控制器应该await
提取结果对象的任务,然后返回该结果:
public async Task<IActionResult> GetPackageAsync()
{
var filepackagesresp = await aClient.GetPackageDetailsAsync();
return Ok(filepackagesresp.ToString());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.