问题标签 [worker-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
108 浏览

c# - 为什么 C# Worker Service 在运行整整 1 小时后总是静默退出?

经过多次测试和实施来自不同文档和博客文章的关于 .NET Worker Service 的建议后,我无法阻止它在运行似乎正好 1 小时后停止。

我可以看到工作人员完成了,因为它正在生成日志,当它停止时,任务管理器中的工作进程就消失了。

这个 Worker Service 是使用 .NET 6 创建的,输出类型是 WinExe,它在 Windows 11 机器上运行。

工作人员所做的是监视机器上运行的进程,如果特定进程停止,它会重新启动它。

我想我现在的问题是:

  • 为什么它会停止(显然在 60 分钟后)?
  • 什么取消它?
  • 如何预防?
  • 它是否必须变成 Windows 服务(https://docs.microsoft.com/en-us/dotnet/core/extensions/windows-service
    • 如果是,为什么?

这些是我研究过的一些资源,但对解决问题没有帮助:

Worker 服务意外停止工作

https://blog.stephencleary.com/2020/05/backgroundservice-gotcha-silent-failure.html

这是 ExecuteAsync 方法(有一些编辑):

这是.csproj指定输出类型的文件的一部分:

这几乎就是这个应用程序的全部内容。它运行得很好,直到它静默退出。

PS:我现在正在使用的解决方法是在进程运行大约 50 分钟后让工作人员自行重启。这一直有效,但我真的很想了解它为什么退出。

此外,我有点愿意切换到 Windows 服务,但我还没有找到任何解释为什么需要这样做。虽然,我也有兴趣用 MSIX 替换 Wix 安装程序,但我在文档中读到后者不支持 Windows 服务,所以我更愿意将服务保留为控制台 WinExe 进程。

0 投票
1 回答
36 浏览

.net-6.0 - 如何使用两个 Net6 Worker 服务访问的锁来同步共享变量?

在VS2022中,Program.cs里面(上面是全部内容),我什至不能声明全局静态变量(由两个Worker共享和更新),如何做到这一点,以便我可以使用锁来同步两个工人之间的更新。任何帮助将不胜感激。

0 投票
0 回答
36 浏览

c# - 工作人员服务 OracleConnection.ConnectionString 无效

我正在提供一项服务,该服务可以在 Oracle DB 表中提取最新日期。在Debug中,程序正常工作,但是当我将程序发布到服务器时,运行时报错:

异常:System.AggregateException:(OracleConnection.Connection 字符串无效)---> System.InvalidOperationException:OracleConnection.Connection 字符串在 System.Data.Common.DbConnection.OpenAsync 的 Oracle.ManagedDataAccess.Client.OracleConnection.Open() 处无效(CancellationToken cancelToken) --- 从先前位置结束堆栈跟踪 --- 在 C:\Users*WORKER PATH* 中的 Project.Worker.GetMaxDateAsync()

应用设置:

程序.cs:

工人.cs:

我希望有专业人士可以帮助我解决这个问题......提前致谢!

0 投票
1 回答
65 浏览

c# - 无法在 try catch 中获取异常

我的 Program.cs 中的 .net core 3.1 中有一个工作人员服务我有以下代码

还有一个工人阶级如下

如果 Task.Delay 首先执行,然后在第二次迭代中 GetData() 方法中发生任何异常,则它不会被我的 Main 方法中的 try catch 捕获。我怎样才能让这些异常被我的主要方法捕获?

0 投票
0 回答
16 浏览

asp.net-core - 如何将woker后台服务链接到ASP MVC REST API端点

我将 api 项目和工作人员服务项目创建到同一个项目解决方案中。(仅供参考:这些项目有单独的 startup.cs 和 program.cs 文件,它在多个项目中运行)所以我想将工作服务链接到端点和工作服务返回结果集到 api 控制器端点