2016-11-14 4 views
2

Я пытаюсь развернуть приложение .NET Core Console в качестве Azure WebJob. Все файлы и т. Д. Копируются в нужные каталоги, но мое консольное приложение - это .dll, поэтому для начала требуется dotnet.exe.Отсутствует dotnet.exe в Azure WebJob

Я добавил файл run.cmd с единственной командой: dotnet QbiSync.dll. Но выход состоит в следующем, не могу найти dotnet.exe:

[11/14/2016 13:15:29 > 4741da: SYS INFO] Run script 'run.cmd' with script host - 'WindowsScriptHost' 
[11/14/2016 13:15:29 > 4741da: SYS INFO] Status changed to Running 
[11/14/2016 13:15:29 > 4741da: INFO] 
[11/14/2016 13:15:29 > 4741da: INFO] D:\local\Temp\jobs\continuous\QbiSync\x4jkoxww.vy4>dotnet QbiSync.dll 
[11/14/2016 13:15:29 > 4741da: ERR ] 'dotnet' is not recognized as an internal or external command, 
[11/14/2016 13:15:29 > 4741da: ERR ] operable program or batch file. 
[11/14/2016 13:15:29 > 4741da: SYS ERR ] Job failed due to exit code 1 
[11/14/2016 13:15:29 > 4741da: SYS INFO] Process went down, waiting for 60 seconds 

Открытие окна консоли с помощью Куду или в Azure Portal и призывающую dotnet.exe и работает отлично. Я также попытался как жесткие ссылки:

  • "D:\Program Files (x86)\dotnet\dotnet.exe" QbiSync.dll
  • "\Program Files (x86)\dotnet\dotnet.exe" QbiSync.dll

Но они также дают ошибки, как:

[11/14/2016 13:59:29 > 4741da: ERR ] The filename, directory name, or volume label syntax is incorrect. 
[11/14/2016 13:59:29 > 4741da: INFO] D:\local\Temp\jobs\continuous\QbiSync\hzlkzj1q.0jt>"D:\Program Files (x86)\dotnet\dotnet.exe" QbiSync.dll 

Несмотря на то, dotnet.exe фактически находится там.

Update:

Возможно, связанной в том, что источник, используемый @echo off в начале сценария. Но это также «команда», которая, похоже, не принимается.

[11/14/2016 12:37:57 > 4741da: INFO] D:\local\Temp\jobs\continuous\QbiSync\3n44nly1.ucq>@echo off 
[11/14/2016 12:37:57 > 4741da: INFO] 
[11/14/2016 12:37:57 > 4741da: ERR ] '@echo' is not recognized as an internal or external command, 

Использованные источники:

+0

Что произойдет, если вы попытаетесь запустить run.cmd вручную с консоли Kudu? –

+0

В качестве быстрого теста я попытался создать непрерывный WebJob с run.cmd, который просто имеет 'dotnet.exe QbiSync.dll' (без наличия dll). Это не удалось: «Приложение для выполнения не существует:« D: \ local \ Temp \ jobs \ непрерывный \ DotNetContJob \ tgq45gw1.kb2 \ QbiSync.dll'', что означает, что он успешно запустил dotnet.exe и только провалился, потому что dll не там. Можете ли вы попробовать этот же тест, чтобы изолировать? –

+0

@DavidEbbo Он успешно запускается и имеет ожидаемый вывод с помощью консоли kudu с 'D: \ local \ Temp \ jobs \ continu \ QbiSync \ jf0yv53s.i3c> run.cmd'. Через несколько минут я проверю ваш второй комментарий. – Raymen

ответ

7

Проблема в том, что ваш run.cmd использует UTF-8 с BOM (метками заказа), что в некоторых случаях вызывает сценарий двигатель, чтобы плохо себя вести. Исправление состоит в отсутствии спецификации.

Существует упоминание об этом на wiki (https://github.com/projectkudu/kudu/wiki/Web-Jobs), но предоставлено легко пропустить.

+0

Я пытаюсь запустить веб-работу от HTTP-клиента. Файл является ZIP-файлом. и содержит класс java и bat-файл для запуска этого класса java. Это работает нормально, когда я делаю POSTMAN. Но когда я использую HTTP-клиент, я всегда получаю следующую ошибку: «i-NPsGbTVUpaP0CeJxMQVrHoDHvaxo3» не распознается как внутренняя или внешняя команда »- Пожалуйста, помогите – Jagaran

+0

@Jagaran, если это произойдет только от некоторых клиентов, это, вероятно, не связано , Задайте новый вопрос –

+0

Нет никакого HTTP-клиента, который я использую в java, это то же самое. он работает в CURL или загружается с веб-консоли. Мой пример кода ниже – Jagaran

Смежные вопросы