Веб-задание Azure. Как подключиться к базе данных Azure MS SQL?

У меня есть веб-сайт MVC, который публикуется в Azure, где он использует базу данных SQL Azure.

Пришло время, когда нам нужно запустить запланированное задание для отправки SMS-напоминаний. У меня сложилось впечатление, что веб-задания Azure хорошо подходят для этого, но у меня возникли некоторые проблемы с его запуском и запуском.

Я добавил консольное приложение в свое решение для веб-сайта и на него ссылается модель данных EF из консольного приложения (которое я хотел бы опубликовать как веб-задание).

Текущее консольное приложение выглядит следующим образом:

 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 или через конструктор.

Это говорит о том, что веб-задание специально ищет строку подключения, которая указывает на учетную запись хранения. Однако мне бы хотелось, чтобы веб-задание запрашивало базу данных Azure, а не работало с хранилищем.

Это выполнимо?

Спасибо,

3 ответа

Решение

К сожалению, SDK WebJobs не поддерживает базы данных SQL как триггеры. Для триггеров поддерживается только хранилище Azure (большие двоичные объекты, очереди и таблицы).

Вы можете получить доступ к базам данных SQL Azure из веб-задания, как показано в этом ответе.

Как писал Виктор, события SDK запускаются BLOB-объектами, очередями и таблицами.
Простое решение для ваших нужд: напишите консольное приложение с подходом опроса. Нет 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
}

Чтобы создать веб-задание, вам не нужно использовать SDK web jobs, вы можете использовать несколько типов исполняемых файлов (.exe, .cmd, .js, .php, .py, ...).

Попробуйте использовать это новое дополнение Visual Studio: http://visualstudiogallery.msdn.microsoft.com/f4824551-2660-4afa-aba1-1fcc1673c3d0, следуйте инструкциям, чтобы установить связь между вашим веб-приложением и консольным приложением, которое будет развернуто в качестве веб-задания при публикации на вашем сайте Azure.

Другие вопросы по тегам