问题标签 [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 投票
1 回答
82 浏览

asp.net - 为什么 IHostBuilder 找不到与 Visual Studio 的 Worker Service 模板一起使用的 ConfigureWebHostDefaults 方法?

我使用Worker Service模板创建了一个 .NET 5、Visual Studio 项目,该模板使用以下方法创建了一个Program.cs包含该类的文件:Program

因为我想指定一个Startup类来实现这个应用程序的健康检查(因为它将被部署到 Kubernetes(我正在关注本教程)),我读到了ConfigureWebHostDefaults扩展方法。但是,尝试使用它时出现以下错误:

在此处输入图像描述

给我错误的代码如下(上面截图中被错误隐藏的代码):

这个答案似乎显示了我的情况,但Microsoft.Extensions.Hosting.Abstractions包并没有解决问题。我也尝试导入Microsoft.AspNetCore.HostingMicrosoft.AspNetCore.Hosting包,但没有成功。我已经在使用这个Microsoft.Extensions.Hosting包了。

0 投票
1 回答
506 浏览

c# - Grpc.Core.RpcException: 'Status(StatusCode = "Unavailable", Detail = "错误启动 gRPC 调用

如果你能告诉我是什么导致了问题以及如何解决它,我将不胜感激。

PS抱歉发布所有代码,只是我不确定哪个确切部分与问题相关。

以下是异常的全文:

Grpc.Core.RpcException: 'Status (StatusCode = "Unavailable", Detail = "错误启动 gRPC 调用。HttpRequestException: 连接未建立,因为目标计算机拒绝了连接请求。SocketException: 连接未建立。目标计算机拒绝连接请求。", DebugException =" System.Net.Http.HttpRequestException: 连接未建立,因为目标计算机拒绝了连接请求。----> System.Net.Sockets.SocketException (10061): 连接未建立,因为目标计算机拒绝了连接请求。在 System.Net.Http.ConnectHelper.ConnectAsync (String host, Int32 port, CancellationToken cancellationToken) ---- End of internal exception stack trace ---- at System.Net.Http.ConnectHelper。System.Net.Http.HttpConnectionPool.GetHttp2ConnectionAsync(HttpRequestMessage 请求,CancellationToken cancelToken)处 System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage 请求,布尔 allowHttp2,CancellationToken cancelToken)处的 ConnectAsync(字符串主机,Int32 端口,CancellationToken cancelToken) .Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage 请求,布尔型 doRequestAuth,CancellationToken cancelToken)在 System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage 请求,CancellationToken cancelToken)在 Grpc.Net.Client.Internal.GrpcCallHttpConnectionPool.GetHttp2ConnectionAsync(HttpRequestMessage 请求,CancellationToken cancelToken)在 System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage 请求,布尔 doRequestAuth,CancellationToken cancelToken)在 System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage 请求,CancellationToken cancelToken)在 Grpc。 Net.Client.Internal.GrpcCallHttpConnectionPool.GetHttp2ConnectionAsync(HttpRequestMessage 请求,CancellationToken cancelToken)在 System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage 请求,布尔 doRequestAuth,CancellationToken cancelToken)在 System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage 请求,CancellationToken cancelToken)在 Grpc。 Net.Client.Internal.GrpcCall2.RunCall (HttpRequestMessage request, Nullable1 超时) ") '

这是服务器代码:

程序.cs

工人.cs

这是客户端代码

程序.cs

0 投票
1 回答
525 浏览

c# - .NET 6 Worker 服务中的连接字符串

我正在尝试使用写在 appsetting.json 中的连接字符串连接到数据库。我尝试在 AddDbContext 中的 UseSqlServer("...") 中传递它,但它不起作用。当我在 Context 类中编写它时,它可以工作。因此,程序运行没有错误,但它没有连接到 Db。

有人知道这里有什么问题吗?以下是 Program.cs 代码:

0 投票
0 回答
40 浏览

c# - 在此示例中如何正确关闭工作人员服务

我有这个 workerservice,它本质上是一个 TCP 套接字服务器。

这是我主要选择根据操作系统设置服务的地方。

这是 Worker,我在其中以套接字作为参数启动 clientServer。这就是问题所在。

我似乎无法正确关闭服务。我初始化并实例化了一个 Socket,我想在服务停止或崩溃时处理它。

处置发生在 EndSDS 类中

这是 EndSDS 类。

会发生什么。

  1. 我启动了服务,它正常启动,因为我可以连接到它并与之交谈。我还可以在日志中看到“启动时达到 StartAsync”

  2. 我停止了服务,并且 StopAsync 没有运行。什么都没发生。日志不会写入日志。

  3. 我启动了服务,但它没有启动 clientServer,因为端口没有关闭,我在日志中收到一条消息。

  4. 我停止服务,StopAsync 运行,一切正常。

  5. 冲洗并重复。

任何人都可以帮助我吗?,我不知道问题是什么。

感谢您的时间。

0 投票
0 回答
20 浏览

.net-5 - 在服务器上安装同一个 Worker 服务的多个实例

我开发了.Net 5一个在后台运行的工作人员服务。我QA, UAT and Pre Prod在同一台服务器中设置了多个测试环境。

所以我想worker service在同一台服务器上为所有这些环境运行多个实例。

但我不能这样做,原因是当我在 QA 中启动它时它是成功的,现在如果我在 UAT 中启动它它没有启动并且自动停止。那么我什至可以实现这一点,为了实现这一点,我是否应该更改任何设置,以便我可以在同一服务器上运行具有多个实例的相同工作服务?

请帮帮我。谢谢!!

0 投票
0 回答
61 浏览

asp.net-core - 为 .Net Core Worker Service 收集和发送指标到 Prometheus 的推荐方法是什么?

我有一个将在后台运行的 .net core worker 服务。我想捕获有关服务健康状态的指标,它需要被 Prometheus 使用。

无论我们需要使用默认拉模型还是推网关,推荐的方法是什么?

0 投票
0 回答
42 浏览

c# - 如何在两个 Worker 服务之间传递数据

假设我有两个长期运行的自定义服务和两个在主机上注册的 WorkerService:

IServiceA 由 WorkerServiceA 解析和运行。

IServiceB 由 WorkerServiceB 解析和运行。

问题:

IServiceA 需要通知/传递一些数据给 IServiceB,以便它可以进一步处理它。

如何实现这样的通信?

0 投票
0 回答
44 浏览

c# - 为什么 .NET Core ILogger 会向每个事件日志条目添加额外的标头信息?我可以阻止它吗?

在 .NET Framework 中,我习惯于让我的 Windows 服务写入自定义事件日志,如下所示:

当我在“事件日志”的“常规”选项卡上查看事件时,它准确地显示了我写的内容,没有任何额外内容:

现在我将此程序作为 ServiceWorker(带有 Windows 服务)移植到 .NET 6,并将日志和源名称存储在 appsettings.json 的相关部分中:

我在 Program.cs 中配置事件日志,如下所示:

我的服务工作者的构造函数如下所示:

我这样写事件日志:

现在,当我在“事件日志”中的“常规”选项卡上查看该事件时,它显示了两个我不想要的额外标题行(和一个额外的换行符):

我可以防止这种情况吗?如果是这样,此设置在哪里/如何控制?如果不是,为什么不呢?

0 投票
3 回答
154 浏览

c# - .Net Core Worker Service appsettings.json 未被读取

我创建了一个 .net 核心工作服务,将 IConfiguration 注入其中,这样我就可以从 appsettings.json 读取一个属性,但是每次我运行该文件时,该属性都会显示为空。但是,如果我强制 IConfiguration 通过 ConfigurationBuilder 添加一个 json 文件,它就可以工作。如何使用默认设置来允许 .net core worker 服务从 appsettings 中读取?

这是 appsettings.json 文件

这是 Program.cs 文件

这是 Program 类的第二次尝试:

0 投票
1 回答
69 浏览

iis - 如何在 IIS 上托管工作服务?

我有一个作为 Windows 服务运行的 .net core 5 worker 服务项目。我还使用 kestrel 服务器合并了 http 轮询。我需要将其用作网站(部署在 IIS 上)而不是 Windows 服务。谁能告诉我如何才能做到这一点,因为我找不到任何有用的材料?