问题标签 [asp.net-core-hosted-services]
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.
asp.net - 具有不同配置的相同类型的多个托管服务?
我有一个我正在尝试为 ASP.NET 应用程序实现的服务,SomeService
它是一种BackgroundService
负责从消息队列中消费消息的实现。我想同时使用几个不同的队列,但延迟不同。例如:
我希望能够注册两个实例someService
,一个用于queue1
,一个用于queue2
configurations.ForEach(x=> services.AddHostedService<SomeService>(x));
是否可以对使用自己的配置运行的每个服务实例执行类似操作
?
c# - C# 在 asp.net 核心托管服务使用者中处理具有多个并行任务的 IAsyncEnumerable 项
我正在使用托管服务在 asp.net 核心应用程序中实现生产者-消费者。我能够让它工作到消费者_recordProcessingChannel.ReadAllAsync()
同步处理项目的地步。
我正在尝试将结果拆分_recordProcessingChannel.ReadAllAsync()
为几个并行任务。例如:我从频道读取了 10000 个项目,我想将这项工作分成 4 个单独的任务,每个 ICMService 处理 2500 个项目。
消费者:
读者:
预先感谢您提供的任何帮助
c# - 如果 IHostedService.StopAsync 方法的实现没有响应取消请求会怎样?
我们正在实现一个 .NET core 3.1 worker 服务,我们需要注册几个托管服务来实现所需的业务。
本文档说明IHostedService接口的StopAsync方法应该能够侦听默认 5 秒超时后发出的取消请求。
据我了解,StopAsync方法是在主机自身关机过程中被主机调用的。
在我们的一个托管服务中,我们需要在托管服务停止过程中调用异步方法;不幸的是,这个方法不支持取消,所以我们没有一个简单的方法来以正确的方式实现StopAsync方法。
这是我们的场景:
在这种情况下,主机级别会发生什么?
这种实现在任何方面都是“危险的”吗?
如果需要很长时间才能完成执行,这是否会阻止主机关闭过程StopAsync
?
这个问题最简单的解决方案是通过从BackgroundServiceMyHostedService
基类 派生来实现 该类,但我想完全理解在主机级别长时间运行实现的可能含义。StopAsync
c# - ASP .Net Core Queued 后台任务并行处理
我有一个 ASP .NET 核心 Web API,它使用 此处描述的排队后台任务。
我使用了提供的代码示例并添加了IBackgroundTaskQueue
,BackgroundTaskQueue
和QueuedHostedService
文章中描述的完全一样。
在我的Startup.cs
中,我只注册了一个QueuedHostedService
实例,如下所示:services.AddHostedService<QueuedHostedService>();
来自 WebApi 控制器的任务被排入队列,然后由QueuedHostedService
.
我希望允许多个后台处理线程出列并执行传入的任务。我能想到的最直接的解决方案是QueuedHostedService
在我的Startup.cs
. 即,像这样:
我还注意到,由于 singal Semaphore in BackgroundTaskQueue
,QueuedHostedService
实例并不是一直都在工作,而是只有在队列中有新任务可用时才会唤醒。
这个解决方案在我的测试中似乎工作得很好。
但是,在这个特定的用例中——它真的是一个有效的、推荐的并行处理解决方案吗?
c# - 如何在具有不同计时器持续时间的.net核心的后台服务中运行多个任务
我正在创建一个将作为 Windows 服务运行的工作服务。我有一个要求,我想调用两个可能具有不同计时器的任务。
SayDoWork
应该每 5 分钟调用一次,并且DoAnotherWork
应该每 10 分钟左右调用一次。这两个任务可以并行运行,互不依赖。
我能够创建DoWork
每 5 分钟运行一次的任务。我对如何实现另一个具有不同计时器持续时间的任务感到有点困惑?
asp.net-core - 如何在 Asp.net core 中创建类似 Windows 的服务?
在 Aspnet 核心中创建服务有不同的方法。IHostedService接口用于创建像Windows Service这样的服务。
在 WebApi 项目中使用IHostedService并将其部署为 Web 项目。一旦 API 项目启动,您的服务就会启动。
服务代码: 创建一个MyHostedService.cs类并将以下代码放入该类中。
班级
开始
停止
你的工作
启动.cs
c# - 无法在 appsettings.json 中绑定一些自定义配置
我有一个简单的HostedService
,我正在尝试从appsettings.customs.json
文件中读取一些强类型配置。以下是应用设置内容:
然后我添加.json
文件并绑定配置,如下所示:
当我尝试Settings
在服务中解析 ' 时,我只得到TrySetting
' 的值,并且 'ApproveSetting
由默认值初始化。似乎它只读取TrySetting
,而不读取ApproveSetting
.
如您所见,我已经尝试了两种Configure(Secion)
方法Configure(t => ...Bind)
。我还尝试更改.json
文件中部分的位置。
你知道这里发生了什么吗?
更新:
ApproveSetting
班级:
TrySetting
班级:
更新2:答案:
最后我发现了问题。问题是我在两个不同的命名空间中有两个ApproveSetting
和类。TrySetting
我正在注册它们,namespace1
并试图在namespace2
. 所以,我的错。
c# - C# 托管服务控制台应用程序的健康检查
我有 2 个托管服务,必须检查彼此的健康状况。如何在 C# 控制台应用程序(托管服务)中实现健康检查。检查托管服务的健康状况的参数是什么。
azure - 托管在 Azure 应用服务中的 .Net Core 的托管服务/后台服务正在停止
嗨,我已经面临这个问题好几天了。希望我能在这里找到一些解决方案。
我有一个 dotnet 核心应用程序,我在其中实现了 HostingService 以从数据库中获取一些记录并将其推送到石英触发器。
以下在 IIS 中运行良好,但部署到 Azure HostingService 时运行了几次迭代,一段时间后没有日志。
我一直在使用此链接中的示例。
我的 Execute 看起来像这样
我需要同时解雇很多工作,比如每天上午 10 点,这可以达到 10,000 多个。任何有关实施的建议,或任何设计缺陷(如果有)在当前实施中,或任何建议真的很感激。
我为此编写了另一个实现,这次我使用 Hangfire 每 1 分钟检查一次数据库记录。这似乎有一个问题,在 IIS 中也很有效,但在 Azure 中却没有。实现如下
已处理异常。
感谢您通读。第一次在 stackoverflow 上,如有必要,我可以添加更多我错过的信息。
环境:
- 点网核心 v3.1
- Azure 应用服务 Linux B1 层
iis - 如何将 Blazor WebAssembly 核心托管自包含应用程序部署到 IIS
我开发了一个 Blazor WebAssembly 应用程序,它将在我们的 Intranet 上运行 Windows 2012 的服务器上使用。这是针对 .Net 5.0 Core Hosted and Self-Contained。我需要部署到 IIS 8.5 并且有一些问题。
当我在 IIS 中添加网站时,我是否指向具有可执行文件和 web.config 的根部署目录?我还需要做什么才能让 IIS 在 wwwroot 子目录中找到索引文件吗?将这个应用程序的部署目录直接放在inetpub下是否合适?发布任务创建了一个相当大的 BlaorDebugProxy 目录。这是为了发布,所以我不明白为什么要创建它。有没有办法防止这种情况发生?我想使用 ServerName\AppName 访问应用程序。如果我使用“AppName”作为主机名创建站点,这会起作用还是我需要做其他事情?当我尝试从 IIS 浏览到该站点时,我收到 500.19 '无法访问请求的页面,因为该页面的相关配置数据无效。我没有对文件进行更改,因为它是由发布过程创建的。这是:
任何想法为什么这不起作用?
请注意,这是使用自包含模型。此外,我已确保该目录已授予此应用程序的应用程序池标识的完全权限。
下面的答案和假设的重复都是指安装框架。但是,我认为自包含模型的全部意义在于它不依赖于已安装的框架。
我进行了广泛的搜索,看到许多涉及这些问题的参考资料,但没有具体说明如何让 IIS(尤其是旧版本)托管自包含模型。Microsoft 页面讨论了优点和缺点以及如何创建文件,但没有详细说明如何托管它们或我上面列出的其他问题。
有没有人成功做到这一点谁可以提供一些指导?
谢谢 !