将webjobs功能公开到仪表板,无需天蓝色存储

lop*_*oni 7 azure azure-webjobs

这个问题中,有一个关于如何使用webjob的示例,该webjob可以在不与azure表存储交互的情况下执行一些后台操作.

我试图在答案中复制代码,但它抛出以下错误:

无法从Azure WebJobs SDK调用"Void ScheduleNotifications()".是否缺少Azure WebJobs SDK属性?"

这个链接中,他们有一个类似的错误,在其中一个答案中,它说这是在0.4.1-beta版本中修复的.我正在运行0.5.0-beta版本,我遇到了错误.

这是我的代码的副本:

class Program
{
    static void Main()
    {
        var config = new JobHostConfiguration(AzureStorageAccount.ConnectionString);
        var host = new JobHost(config);

        host.Call(typeof(Program).GetMethod("ScheduleNotifications"));

        host.RunAndBlock();
    }

    [NoAutomaticTrigger]
    public static void ScheduleNotifications()
    {
        //Do work
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道我是否遗漏了某些内容,或者这仍然是Webjobs SDK中的一个错误.

更新:根据Victor的回答,计划类必须公开.

工作代码:

public class Program
{
    static void Main()
    {
        var config = new JobHostConfiguration(AzureStorageAccount.ConnectionString);
        var host = new JobHost(config);

        host.Call(typeof(Program).GetMethod("ScheduleNotifications"));

        host.RunAndBlock();
    }

    [NoAutomaticTrigger]
    public static void ScheduleNotifications()
    {
        //Do work
    }
}
Run Code Online (Sandbox Code Playgroud)

Vic*_*aci 18

除非您使用自定义类型定位器,否则函数必须满足以下所有条件:

  • 它必须是公开的
  • 它必须是静态的
  • 它必须是非抽象的
  • 它必须在非抽象类中
  • 它必须在公共课堂上

您的功能不符合最后条件.如果你把这个课程公之于众,那就行了.

此外,如果您使用webjobs sdk 0.5.0-beta并运行仅包含示例中代码的程序,您将看到一条消息,指出未找到任何功能.