Pio*_*rak 2 c# azure .net-core azure-web-app-service azure-devops
我正在 .NET Core 3.1 中创建一个新的 WorkerService (https://learn.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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 Azure 发布管道的 Azure 应用服务部署任务来部署它。部署顺利进行,没有任何错误,但应用程序未启动。我知道这一点是因为我检查日志。除了登录工作人员之外,我还登录应用程序启动Program.cs
当我导航到 Azure 门户上的控制台并启动它时,dotnet Worker.dll它会启动并正常工作。我看到消息已记录到 blob 容器中。
我需要为工人服务做一些特别的事情吗?我正在从 Azure 发布管道部署 .NET Core 3.1 Web 应用程序,没有遇到任何问题。
编辑:
当从 VS2019 作为 Azure WebJob 发布时(此和文件夹是您可以选择的发布目标),它会按预期工作。但现在它在 WebJobs 刀片中可见。因此,我认为这是与 Azure DevOps 不同的部署。
首先,我建议您使用WebJobs SDK编写 webjob 应用程序。官方的做法是创建一个通用的控制台应用程序,然后添加功能。
其次,您需要run.cmd在 webjob 目录中添加一个脚本。
这是一个示例:
Publishdotnet 任务中的特定路径。--output $(Build.ArtifactStagingDirectory)\WebJob\app_data\Jobs\Continuous\WebJob
run.cmd脚本重要提示:请确保设置正确的工作目录,如下所示:
脚本:"dotnet WebJob.dll %*" | Out-File run.cmd -Encoding ASCII,请更改WebJob.dll为您的dll名称。
工作目录:$(Build.ArtifactStagingDirectory)\WebJob\app_data\Jobs\Continuous\WebJob
发布路径:$(Build.ArtifactStagingDirectory)\WebJob\
选择正确的文件夹。我的是$(System.DefaultWorkingDirectory)/_Webjob-ASP.NET Core-CI/drop,你应该用正确的文件夹路径更改它。
| 归档时间: |
|
| 查看次数: |
3870 次 |
| 最近记录: |