我是azure webjobs的新手,但我正在尝试使用它们在需要时对bing maps api进行api调用。最终这将由我的网站上的请求触发,但此刻我只是想弄清楚webjobs。我创建了一个控制台应用程序并手动将其作为webjob添加到示例网站。我所有的测试webjobs(简单的hello world类型的东西)都运行良好,但是当我尝试调用bing maps api时,webjob说它成功完成但只执行了部分代码。这是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中运行它时,一切正常,并且正确的东西都会打印到控制台等等。
当我将其压缩并将其添加为webjob时,api调用不会发生,或者webjob在它发生之前完成。当我在运行后查看日志时,我看到控制台消息“我将要调用”,然后状态变为成功,webjob完成而不运行任何其余代码。像这样的webjob不能用api调用,或者我只是做错了什么并且有一个修复?再说一遍,我是webjobs的新手,所以任何简单的建议都会很棒。谢谢!
答案 0 :(得分:3)
您可能需要等待响应发生。您正在调用“异步”方法,但静态入口点本身不支持在关闭可执行文件之前等待那些完成。试试这个:
(x, y)