Консольное приложение Azure WebJob Пусто Аргументы при вызове из webhook

Я работаю над Azure WebJob. Я начал с создания консольного приложения в Visual Studio и опубликовал приложение как webJob в portal.azure из VisualStudio.

WebJob запускается вручную из своего Webhook с username а также passwordhttps://{MyWebAPP}.scm.azurewebsites.net/api/triggeredwebjobs/{MyWebJob}/run?arguments=1 2 3 из второй программы.

этот WebJob очень прост. Он отображает только аргументы 1,2 и 3.

когда я запускаю программу из CommandeLine так dotnet MyProject.dll 1 2 3 это работает хорошо. но когда я запускаю его из webHook, он не читает аргументы.

вот мой основной сценарий:

 class Program
{
    static void Main(string[] args)
    {

        Console.WriteLine("PARAMS Passed : " + string.Join(",", args));
    }
}

Это журнал в WebJob, когда я запускаю запрос WebHook by Post: [06/09/2018 15:19:37 > 33a9f2: INFO] PARAMS Passed :

и это консоль, когда я запускаю ее из командной строки: [06/09/2018 15:19:37 > 33a9f2: INFO] PARAMS Passed : 1,2,3

Может ли кто-нибудь помочь, пожалуйста. Та, Кс от всех.

1 ответ

Решение

Это сводится к ошибке публикации VS. Проблема в том, что он автоматически генерирует run.cmd который имеет:

dotnet foo.dll

Когда это действительно должно иметь:

dotnet foo.dll %*

Чтобы аргументы передавались в ваше консольное приложение.

Я сообщу о проблеме, но сейчас вы можете обойти это следующим образом:

  • Явно создать run.cmd в корне вашего консольного приложения (то есть рядом с program.cs). Сделайте, чтобы это содержало правильную строку выше с %*, И, очевидно, используйте свое действительное имя dll вместо foo.dll:)
  • Добавьте его в свой проект и установите Copy to Output Directory в Copy Always (по умолчанию это не копировать).

Это приведет к вашему run.cmd чтобы развернуть, и VS не будет автоматически генерировать неисправный.

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