Могу ли я вызвать веб-сайт 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.

Ответ 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/