繁体   English   中英

请求完成前的 HTTP 响应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM