Веб-задание 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.