WorkerService, развернутый в Azure Служба приложений не запускается - PullRequest
0 голосов
/ 16 января 2020

Я создаю новый WorkerService в. NET Core 3.1 (https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1&tabs=visual-studio) и развертываю его в Azure Служба приложений. В нем нет ничего, кроме службы Worker, которая регистрирует сообщение каждые 3 секунды.

public class Worker : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            Log.Information("Worker running");
            await Task.Delay(3000, stoppingToken);
        }
    }
}

Я развертываю его с помощью Azure Выпуск конвейера Azure Задача развертывания службы приложений. Развертывание проходит без ошибок, но приложение не запускается. Я знаю это, потому что я проверяю логи. Кроме регистрации в работнике, я также регистрирую запуск приложения в Program.cs

Когда я перехожу к консоли на портале Azure и запускаю ее с dotnet Worker.dll, она запускается и работает нормально. Я вижу сообщения, зарегистрированные в контейнере BLOB-объектов.

Нужно ли делать что-то особенное для рабочего сервиса? Я развертывал. NET Веб-приложения Core 3.1 из Azure Выпуск конвейера, и у меня не было никаких проблем.

Редактировать:

При публикации с VS2019 как Azure WebJob (эта папка и все публичные sh цели, которые вы можете выбрать) работает должным образом. Однако теперь это видно в блейде WebJobs. Так что это отличается от Azure Devops, я думаю.

1 Ответ

1 голос
/ 17 января 2020

Во-первых, я предлагаю вам написать приложения для веб-заданий с помощью WebJobs SDK . Официальный способ - создать общее консольное приложение, а затем добавить функции.

Во-вторых, вам нужно добавить скрипт run.cmd в каталог веб-задания.

Вот пример:

  1. Добавить дополнительный аргумент для publi sh указать c путь в Publish do tnet задании.

--output $(Build.ArtifactStagingDirectory)\WebJob\app_data\Jobs\Continuous\WebJob

enter image description here

Добавление задачи PowerShell для генерации run.cmd сценария

Важно: Убедитесь, что для правильного рабочего каталога задано следующее:

Сценарий: "dotnet WebJob.dll %*" | Out-File run.cmd -Encoding ASCII, пожалуйста, измените WebJob.dll на ваше имя.

Рабочий каталог: $(Build.ArtifactStagingDirectory)\WebJob\app_data\Jobs\Continuous\WebJob

enter image description here

Publi sh артефакт

Путь к публикации sh: $(Build.ArtifactStagingDirectory)\WebJob\

enter image description here

Если все в порядке, вы получите артефакт после запуска конвейера сборки:

enter image description here

Создание конвейера выпуска

Выберите правильную папку. Мой $(System.DefaultWorkingDirectory)/_Webjob-ASP.NET Core-CI/drop, вы должны изменить его, указав правильный путь к папке.

enter image description here

Проверьте веб-приложение:

enter image description here

enter image description here

...