Azure WebJob最佳方法

Nad*_*baa 5 c# azure azure-webjobs azure-webjobssdk

这是我第一次使用WebJob类型的应用程序.我创建了一个webjob项目,并在解决方案中附带Program.csFunction.cs.

我已经删除了,Function.cs因为在这个项目中没有队列,我将从中获取数据.

现在Program.cs已有Main方法如下:

class Program
{
    // Please set the following connection strings in app.config for this WebJob to run:
    // AzureWebJobsDashboard and AzureWebJobsStorage
    static void Main()
    {
        var host = new JobHost();
        // The following code ensures that the WebJob will be running continuously
        host.RunAndBlock();
    }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这RunAndBlock是连续运行webjob,但我希望这项工作只运行一次.我想按计划从外部控制执行.我想知道如何让我的代码只运行一次?如下所示,我有一个SupportServiceClass RunOnePoolProvisioingCycle,我想只调用一次这个方法.这是正确的方法吗?

static void Main()
{
    SupportService _supportService = new SupportService();
    _supportService.Initialize();
    _supportService.SetPoolProvisioningConfigurations();
    _supportService.RunOnePoolProvisioningCycle();
}
Run Code Online (Sandbox Code Playgroud)

还是这个?

static void Main()
{
    var host = new JobHost();
    SupportService _supportService = new SupportService();
    _supportService.Initialize();
    _supportService.SetPoolProvisioningConfigurations();
    host.Call(typeof(SupportService).GetMethod("SetPoolProvisioningConfigurations"));
}
Run Code Online (Sandbox Code Playgroud)

还是这个?

static void Main()
{
    var host = new JobHost();
    SupportService _supportService = new SupportService();
    _supportService.Initialize();
    _supportService.SetPoolProvisioningConfigurations();
    host.CallAsync(typeof(SupportService).GetMethod("SetPoolProvisioningConfigurations"));
}
Run Code Online (Sandbox Code Playgroud)

或者我应该使用:

host.Start()
Run Code Online (Sandbox Code Playgroud)

要么

host.StartAsync()?
Run Code Online (Sandbox Code Playgroud)

ben*_*uin 3

你看到的是SDK的一部分,它是可选的。Webjob 可以像控制台应用程序一样简单,您可以按原样压缩、上传和运行。

所以这段代码似乎是您的情况的最佳选择:

static void Main()
{
    SupportService _supportService = new SupportService();
    _supportService.Initialize();
    _supportService.SetPoolProvisioningConfigurations();
    _supportService.RunOnePoolProvisioningCycle();
}
Run Code Online (Sandbox Code Playgroud)