Могу ли я вызвать веб-сайт Azure с веб-сайта Azure и передать его параметры?
У меня есть веб-сайт Azure, который я хочу вызвать с веб-сайта Azure. Я хочу передать строковые параметры с веб-сайта на веб-сайт.
Я знаю, что могу использовать webjob как API REST (https://github.com/projectkudu/kudu/wiki/Web-jobs).
Поэтому я могу вызывать webjob без каких-либо параметров: POST jobs/triggered/myjobname/run
Но добавление параметров в конце не работает, т.е. заданий /triggered/myjobname/run? myparam1 = value1
Информация, которую я вижу об использовании атрибутов в Microsoft.WindowsAzure.Jobs для привязки, не упоминает мой случай, просто привязывая к элементам хранения Azure (http://blogs.msdn.com/b/jmstall/archive/2014/01/28/trigger-bindings-and-route-parameters-in-azurejobs.aspx).
Это то, что я хочу сделать выполнимым? Нужно ли мне что-то делать, например, создать новый элемент в очереди хранения Azure, чтобы вызвать мой веб-сайт?
Спасибо.
Ответы
Ответ 1
Если вы хотите вызвать WebJob с вашего веб-сайта, лучшее, что вы можете сделать, это просто разместить код WebJob на своем веб-сайте и просто вызвать этот код, вы все равно можете легко использовать SDK WebJob изнутри вашего веб-сайта. (для вызова примера метода SDK WebJobs: https://web.archive.org/web/20180415074357/http://thenextdoorgeek.com/post/WAWS-WebJob-to-upload-FREB-files-to-Azure-Storage -использование-WebJobs-SDK).
Причина, по которой вы не хотите вызывать WebJob с вашего веб-сайта, заключается в том, что этот вызов содержит секрет, который вы скорее всего не храните на своем веб-сайте (учетные данные для развертывания).
Если вы предпочитаете разделять код WebJob и Website, лучше всего общаться с помощью очереди, WebJob прослушивает очередь, а Website отправляет запрос в очередь.
Что касается исходного вопроса, в настоящее время нет способа передать параметры в вызов вызова WebJob.
Ответ 2
Вы можете вызвать лазурный webjob с параметрами, используя адрес:
"https://mywebsite.scm.azurewebsites.net/api/triggeredwebjobs/mywebjob/run?arguments=myparameter"
class Program
{
static void Main(string[] args)
{
if (args[0]=="myparameter")
...
}
}
Дополнительная информация: https://github.com/projectkudu/kudu/pull/1183
Ответ 3
Мне понадобилось время, чтобы выяснить, как настроить работу с помощью аргументов с использованием интерфейса Azure Portal (не Post Api/Kudu), так что вот шаги:
-
Создайте веб-приложение на своем WebApp
-
Найдите веб-задание в одной из региональных коллекций в списках заданий планировщика расписаний, "Job Job Scheduler"
-
Измените Url в "Action settings" для вашего задания и добавьте ?arguments=<myArgument>
к нему, чтобы он выглядел следующим образом:
...scm.azurewebsites.net/api/triggeredwebjobs/<my-job-name>/run?arguments=<myArgument>
Ответ 4
Документированный способ сделать это - поставить одну или несколько сообщений очереди в Azure в очередь. Каждое сообщение должно содержать достаточно информации о параметрах, чтобы ваш веб-сайт мог сделать это волшебство.
В вашем WebJob используйте атрибут QueueTriggerAttribute, чтобы Azure автоматически запустил WebJob до получения соответствующего сообщения о очереди.
Подробности здесь
http://azure.microsoft.com/en-gb/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/