我目前正在开发一个简单的c#formflow bot,它捕获值并将这些值发送到外部api,从外部api获取json数据,并根据返回的结果创建Card Attachments。我正在调用OnCompletion委托中的外部api,如下所示,为了保持简单,我没有将任何值传递给api(用于测试目的)
.OnCompletion(async (context, profileForm) =>
{
var reply = context.MakeMessage();
var carsFromApi = await GetCarsAsync("/api/values");
reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;
reply.Attachments = GetCards(carsFromApi);
await context.PostAsync(reply);
// Tell the user that the form is complete
})
我打电话给api并将结果存储在" carsFromApi" ,我进入下面的代码片段
private static async Task<List<Car>> GetCarsAsync(string path)
{
List<Car> car = new List<Car>();
HttpResponseMessage response = await client.GetAsync(path);
if (response.IsSuccessStatusCode)
{
car = await response.Content.ReadAsAsync<List<Car>>();
}
return await response.Content.ReadAsAsync<List<Car>>();
}
问题是当我按下F10然后转到下一行,即&#34; reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;&#34;。存储汽车的局部变量&#34; carsFromApi&#34;现在为空。这是它全部崩溃的部分。我不能通过这个&#34; carsFromApi&#34; to&#34; reply.Attachments = GetCards(carsFromApi);&#34;我试图将数据存储在私有变量中,但似乎也是null。外部api正在运行,因为它现在只返回一个静态文本列表。有任何想法吗?提前谢谢。
答案 0 :(得分:0)
根据您所描述的内容,您的代码不会通过if (response.IsSuccessStatusCode)
的路径存在。检查是否达到了这一点,因为我怀疑是异常或者请求出了问题。
或者,您可以尝试在调用ResumeAfter<T>
时指定的Form
方法中执行请求,而不是OnCompletion
代理