После развертывания веб-задания Azure не запускаются - PullRequest
0 голосов
/ 03 июля 2019

Я создал веб-работу, используя веб-вакансии 3.0 и ядро ​​dotnet.Это веб-задание запускается триггером служебной шины и в настоящее время работает на локальном уровне.Однако при развертывании веб-задания в Azure (с помощью стандартного процесса zip, с типом, установленным в непрерывный, и масштабированием до нескольких экземпляров), веб-задание развертывается, а затем не запускается со следующей ошибкой.

[07/03/2019 11:30:47 cdae3f: SYS INFO] Run script 'run.cmd' with script host - 'WindowsScriptHost'
[07/03/2019 11:30:47 cdae3f: SYS INFO] Status changed to Running
[07/03/2019 11:30:48 cdae3f: INFO] 
[07/03/2019 11:30:48 cdae3f: INFO] D:\local\Temp\jobs\continuous\export-pdf\kucubmeb.3gj>dotnet exec Foo.ExportPdf.WebJob.dll 
[07/03/2019 11:30:48 cdae3f: ERR ] Error:
[07/03/2019 11:30:48 cdae3f: ERR ]   An assembly specified in the application ependencies manifest (Foo.ExportPdf.WebJob.deps.json) was not found:
[07/03/2019 11:30:48 cdae3f: ERR ]     package: 'System.Text.Encoding.CodePages', version: '4.5.1'
[07/03/2019 11:30:48 cdae3f: ERR ]     path: 'runtimes/win/lib/netcoreapp2.0/System.Text.Encoding.CodePages.dll'
[07/03/2019 11:30:48 cdae3f: ERR ] 
[07/03/2019 11:30:48 cdae3f: SYS ERR ] Job failed due to exit code -2147450740
[07/03/2019 11:30:48 cdae3f: SYS INFO] Process went down, waiting for 60 seconds
[07/03/2019 11:30:48 cdae3f: SYS INFO] Status changed to PendingRestart

Теперь, глядя на журнал ошибок выше, ясно видно, что отсутствует «System.Text.Encoding.CodePages.dll», и это является причиной проблемы.Поэтому, увидев это, я установил пакет nuget для Encoding.CodePages и теперь могу видеть файл .dll в выходном каталоге, однако это не влияет на сообщение об ошибке.

У меня такое ощущение, что либосообщение об ошибке - красная сельдь или что-то не так с файлом deps.json, которого я не понимаю.

Рад предоставить любые примеры кода, но так как это кажется проблемой развертывания, я не был уверен, что это будет актуально.

Ответы [ 2 ]

1 голос
/ 08 июля 2019

У меня раньше была похожая проблема для веб-задания ядра .net.

Вот мое решение:

После создания проекта консоли ядра .net и установки всех необходимых пакетов nuget,и убедитесь, что веб-работа может работать локально.

Затем щелкните правой кнопкой мыши проект -> выберите Опубликовать -> во всплывающем окне публикации, выберите папку, а также выберите путь (вы можете сохранить путь по умолчанию), затем нажмитекнопка публикации:

enter image description here

После завершения публикации вы можете перейти к пути, который вы определили на предыдущем шаге (по умолчанию путь выглядиткак это: webjob_name \ bin \ Release \ netcoreapp2.1 \ publish).Создайте файл run.cmd и запишите что-то вроде dotnet your_webjob_name.dll в run.cmd ->, а затем отправьте все файлы здесь в файл .zip.

enter image description here

Последний шаг - переход к порталу Azure, загрузка ZIP-файла, настройка веб-задания и т. Д.

0 голосов
/ 03 июля 2019

Мне удалось заставить это работать, хотя, возможно, не обязательно докопаться до причины, по которой вышеперечисленное не работает.

Я следовал статье ниже, в которой рассказывается, как развернуть основные веб-задания dotnet через веб-сайт и профиль публикации. Публикация веб-работы таким образом заставляет его запускаться и работать как ожидалось.

https://dotnetcoretutorials.com/2018/10/12/azure-webjobs-in-net-core-part-3

В случае, если веб-сайт закрывается, это основные шаги, которые я должен был выполнить, чтобы он заработал.

  1. Добавить основной сайт asp.net в ваше решение (пустой шаблон)
  2. Добавьте следующий фрагмент в файл csproj новых веб-сайтов (измените WebJobExample, указав имя и местонахождение вашего веб-задания)
    <Target Name="PostpublishScript" AfterTargets="Publish">
      <Exec Command="dotnet publish ..\WebJobExamples.WebJobExample\ -o 
      $(PublishDir)App_Data\Jobs\continuous\WebJobExample"   />
    </Target>
  1. Загрузить профиль публикации из службы приложений и развернуть приложение с помощью Web Deploy (FTP у меня не работал)
...