Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 致电另一个网站';带webjobs的api_C#_Azure_Azure Webjobs - Fatal编程技术网

C# 致电另一个网站';带webjobs的api

C# 致电另一个网站';带webjobs的api,c#,azure,azure-webjobs,C#,Azure,Azure Webjobs,我是azure webjobs的新手,但我正在尝试使用它们在需要时对bing地图api进行api调用。最终,这将由我网站上的一个请求触发,但目前我正试图找出webjobs。我创建了一个控制台应用程序,并手动将其作为webjob添加到示例网站。我所有的测试webjob(简单的hello world类型的东西)都工作得很好,但是当我尝试调用bing maps api时,webjob说它成功完成了,但只执行了部分代码。以下是webjob的代码: class Program { static v

我是azure webjobs的新手,但我正在尝试使用它们在需要时对bing地图api进行api调用。最终,这将由我网站上的一个请求触发,但目前我正试图找出webjobs。我创建了一个控制台应用程序,并手动将其作为webjob添加到示例网站。我所有的测试webjob(简单的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;
    }
}
类程序
{
静态void Main(字符串[]参数)
{
程序p=新程序();
p、 MakeAsync();
}
公共异步void MakeAsync()
{
Console.WriteLine(“我正要打电话”);
CallMe c=新CallMe();
boolx=wait c.CallBingMapsAsync(49931);
WriteLine(“我调用了,结果是{0}”,x);
}
}
公共类呼叫
{
公共异步任务CallBingMapsAsync(int-zip)
{       
rootoblookups=wait BingMaps.GetLocations(zip);
此处的资源=查找。资源集[0]。资源[0];
字符串city=here.address.locality;
双纬度=此处点坐标[0];
double lon=此处的点坐标[1];
WriteLine(“我查找了{0}并在({1}N,{2}W)找到了它。”,城市,拉特,伦敦);
返回true;
}
}
BingMaps.GetLocations()
检索数据并将其转换为对象格式。当我在VisualStudio中运行这个程序时,一切都正常,正确的东西被打印到控制台上,等等


当我压缩它并将其添加为webjob时,api调用要么不发生,要么webjob在它发生之前完成。当我在运行后查看日志时,我看到出现控制台消息“我将调用”,然后状态更改为success,webjob在不运行任何其他代码的情况下完成。像这样的webjob是否不能与api调用一起工作,或者我只是做错了什么,并且存在修复?再说一次,我对webjobs还不熟悉,所以任何简单的建议都会很棒。谢谢

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

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);
}