4

我有一个发布到 Azure 的 MVC 网站,它使用 Azure SQL 数据库。

是时候我们需要运行计划任务来发送 SMS 提醒了。我的印象是 Azure Web Jobs 非常适合这个,但是在启动和运行它时遇到了一些问题。

我已将控制台应用程序添加到我的网站解决方案中,并由控制台应用程序中的 EF 数据模型引用(我想将其作为 Web 作业发布)。

当前的控制台应用程序如下所示:

 class Program
{
    static void Main(string[] args)
    {
        JobHost host = new JobHost();
        host.RunAndBlock();
    }

    public static void ProcessNotifications()
    {
        var uow = new KirkleesDatabase.DAL.UnitOfWork();
        uow.CommunicationRepository.SendPALSAppointmentReminders();
    }

}

运行控制台应用程序将抛出异​​常:

附加信息:缺少用户帐户连接字符串。这可以通过“AzureJobsData”连接字符串或构造函数来设置。

这表明 Web 作业专门寻找指向存储帐户的连接字符串。但是,我希望 Web 作业能够查询 Azure 数据库,而不是使用存储。

这是可行的吗?

谢谢,

4

3 回答 3

2

正如 Victor 所写,sdk 事件由 blob、队列和表触发。
满足您需求的简单解决方案:使用 pollig 方法编写控制台应用程序。不需要sdk。http://blog.amitapple.com/post/73574681678/git-deploy-console-app/开头的详细信息

while(true)
{
  if ("isthereworktodo?")
  {
    var uow = new KirkleesDatabase.DAL.UnitOfWork();
    uow.CommunicationRepository.SendPALSAppointmentReminders();
  }
  Thread.Sleep(10000);  // set an appropriate sleep interval
}
于 2014-02-14T06:49:01.077 回答
1

不幸的是,WebJobs SDK 不支持将 SQL 数据库作为触发器。对于触发器,它仅支持 Azure 存储(blob、队列和表)。

您可以从 Web 作业访问 Azure SQL 数据库,如本答案所示。

于 2014-02-13T22:49:44.090 回答
0

要创建 Web 作业,您不必使用 webjobs sdk,您可以使用多种类型的可执行文件(.exe、.cmd、.js、.php、.py,...)。

尝试使用这个新的 Visual Studio 插件:http: //visualstudiogallery.msdn.microsoft.com/f4824551-2660-4afa-aba1-1fcc1673c3d0,按照那里的步骤链接您的 Web 应用程序和将部署的控制台应用程序发布到 Azure 站点时作为 Web 作业。

于 2014-02-14T07:15:35.467 回答