gpt4 book ai didi

c# - 使用 webjobs 调用另一个网站的 api

转载 作者:太空宇宙 更新时间:2023-11-03 23:12:40 25 4
gpt4 key购买 nike

我是 azure webjobs 的新手,但我尝试在需要时使用它们对 bing map api 进行 api 调用。最终这将由我网站上的请求触发,但目前我只是想找出网络作业。我创建了一个控制台应用程序,并将其作为网络作业手动添加到示例网站。我的所有测试 webjobs(简单的 hello world 类型的东西)都工作正常,但是当我尝试调用 bing map api 时,webjob 说它已成功完成,但只执行了部分代码。这是网络作业的代码:

class Program
{
static void Main(string[] args)
{
Program p = new Program();
p.MakeAsync();
}

public async void MakeAsync()
{
Console.WriteLine("I'm about to call");
CallMe c = new CallMe();
bool x = await c.CallBingMapsAsync(49931);
Console.WriteLine("I called and the result was {0}", x);
}
}

public class CallMe
{
public async Task<bool> CallBingMapsAsync(int zip)
{
RootOb lookups = await BingMaps.GetLocations(zip);
Resource here = lookups.resourceSets[0].resources[0];
string city = here.address.locality;
double lat = here.point.coordinates[0];
double lon = here.point.coordinates[1];
Console.WriteLine("I looked up {0} and found it at ({1} N, {2} W).",city, lat, lon);
return true;
}
}

BingMaps.GetLocations() 检索数据并将其转换为对象格式。当我在 Visual Studio 中运行它时,一切正常,并且正确的内容会打印到控制台等。

当我压缩此文件并将其添加为 Web 作业时,API 调用要么不会发生,要么 Web 作业在发生之前完成。当我在运行后查看日志时,我看到控制台消息“我即将调用”发生,然后状态更改为成功,并且 webjob 完成而不运行任何其余代码。像这样的网络作业是否不能与 api 调用一起使用,或者我只是做错了什么并且有修复?再说一次,我是网络工作的新手,所以任何简单的建议都会很棒。谢谢!

最佳答案

您可能需要等待响应。您正在调用“异步”方法,但静态入口点本身并不支持在关闭可执行文件之前等待这些方法完成。试试这个:

static void Main(string[] args)
{
Program p = new Program();
p.MakeAsync().Wait();
}

public async Task MakeAsync()
{
Console.WriteLine("I'm about to call");
CallMe c = new CallMe();
bool x = await c.CallBingMapsAsync(49931);
Console.WriteLine("I called and the result was {0}", x);
}

关于c# - 使用 webjobs 调用另一个网站的 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38512092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com