致电其他网站';带有webjobs的api

本文关键字:带有 webjobs api 其他 网站 | 更新日期: 2023-09-27 17:58:02

我是azure webjobs的新手,但我正试图在需要时使用它们对bing maps api进行api调用。最终,这将由我网站上的请求触发,但目前我只是想弄清楚webjobs。我创建了一个控制台应用程序,并将其作为网络作业手动添加到一个示例网站。我所有的测试webjob(简单的hello-world类型的东西)都运行良好,但当我尝试调用bing-maps-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()检索数据并将其转换为对象格式。当我在visualstudio中运行这个程序时,一切都很好,正确的东西会打印到控制台等。

当我压缩它并将其添加为网络作业时,api调用要么没有发生,要么网络作业在发生之前完成。当我在运行后查看日志时,我看到控制台消息"I’m about call"出现,然后状态更改为success,webjob在不运行任何其他代码的情况下完成。像这样的网络作业是否不适用于api调用,或者我只是做错了什么,并且有修复方法?再说一次,我是网络作业的新手,所以任何简单的建议都会很棒。谢谢

致电其他网站';带有webjobs的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);
}