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

标签 c# azure azure-webjobs

我是 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/

相关文章:

c# - 如何在 C# 应用程序中使用 Shell32?

sql-server - 存储过程结果存入 Azure 数据仓库中的临时表

azure - 如何集成测试Azure Web Jobs?

c# - 从 PDF 文档中删除超链接 (iTextSharp)

c# - 如何为 TabItem 标题设置最大宽度?

c# - 为什么此 LINQ-to-SQL 查询会出现 NotSupportedException?

c# - MSAL + Azure 应用服务

node.js - 使用 NodeJS 和 express-fileupload 将文件上传到服务器,并将其直接流式传输到 Azure 云

用于控制台应用程序 webjob 的 Azure Key Vault

azure - 使用 WebJob 部署时网站未更新