问题标签 [hangfire-sql]

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 回答
1028 浏览

hangfire - Hangfire 不使用配置的 Logger 记录异常

根据hangfire文档

从 Hangfire 1.3.0 开始,如果您的应用程序已经通过反射使用了以下库之一(因此 Hangfire 本身不依赖于其中任何一个),则无需执行任何操作。通过按如下所示的顺序检查相应类型的存在来自动选择日志记录实现。

Serilog
NLog
Log4Net
EntLib
记录
Loupe
Elmah

我有Serilog如下使用的 ASP.NET Core 2.0 应用程序

该应用程序配置为使用 Hangfire。在后台作业处理过程中,如果发生任何异常,Hangfire 会按预期重新尝试作业 10 次,并增加延迟,并在仪表板中显示异常。

问题
Hangfire 仪表板在 UI 上显示异常,但不会将异常记录到配置的 Serilog 接收器中。

注意:Hangfire 仪表板会显示异常,但它会格式化异常, 请参阅此处隐藏有关异常的关键信息。我认为如果它记录异常,Serilog 记录器会记录完整的异常。

0 投票
0 回答
130 浏览

msmq - Hangfire MSMQ 在服务器 1 中处理但卡在服务器 2 中

我正在使用带有 MSMQ 的 Hangfire。这是设置

  • 2 个前端服务器(用于 IIS),我将它们称为web1web2
  • Hangfire Windows 服务的第三台服务器(我称之为 app1)
  • 它们之间的负载均衡器。

问题

当我尝试使用主机名(比如说koko.com/hangfire)访问 Hangfire 仪表板时,消息将被排入其中一个 Web 服务器 MSMQ 中。您可以在 web1 或 web2的传出 MSMQ 消息中看到它。

因此,我进行了更多调查,以了解为什么消息没有从 Outgoing Messages 中移出。

我只是从web1中的 http://localhost/hangfire 访问了仪表板,它就可以工作了。然后我从那里排队工作,但没有奏效。当我在web2中重复相同的过程时,它会起作用!

为什么将来自 web2 的消息排入队列有效但在 web1 中无效?!消息卡在 web1 Outgoing Queues中

0 投票
1 回答
2880 浏览

c# - 可以挂起限制并行运行的后台作业的数量

我有 IO 密集型方法,我使用 hangfire 作为后台作业运行。

因此,对于每个 id,我将一个后台作业排入队列并按预期立即调用 hangfire DoWork()。但是DoWork是 IO 密集型的。因此,如果我有 100 多个 id,则需要大量 CPU 功率和带宽

无论如何可以限制 Hangfire 中的后台作业数量

0 投票
0 回答
2548 浏览

c# - 初始化字符串的格式不符合从 services.AddHangfire 上的索引 0 开始的规范

我正在尝试借助他们网站上的文档将hangfire集成到我的应用程序中,但是,在尝试运行应用程序时出现此错误

System.ArgumentException: 'Format of the initialization string does not conform to specification starting at index 0.'

在我的 Startup.cs 文件中的这行代码上:

我首先使用实体​​框架代码添加了 Db,文件如下所示:

使用调用存储在 appsettings 文件中的连接字符串的 DBFactory。

应用设置.json

我已经运行了迁移并且成功创建了数据库并且那里没有问题。我在这里缺少什么吗?谢谢。

0 投票
1 回答
347 浏览

asp.net-core-mvc - Hangfire仪表板:SqlException:无效的列名'Key'

我的网络服务器上安装了 Hangfire。它有效。我能够访问hangfire仪表板。

但是今天突然我尝试打开仪表板,当尝试访问http://localhost/hangfire时, 我收到以下错误:

由于仪表板是一些内部的 Hangfire 工具 - 我只是不知道如何解决这个问题。由于 sql 是由 Hangfire 安装的,而 Hangfire 是从 nuget 安装的。

有没有人遇到过这个问题?知道如何使hangfire仪表板出现吗?

谢谢你。

0 投票
1 回答
402 浏览

c# - 开发模式下的 Hangfire 数据库

Hangfire在我的 ASP.NET Core 应用程序中使用。它仍在开发中,现在每次运行应用程序时,我都想Hangfire删除旧数据库并为每次运行创建一个新数据库。

目前,当我运行应用程序时,Hangfire仪表板仍然显示旧作业,即使是那些不再在我的代码中的作业。

配置时我可以执行以下操作吗Hangfire

0 投票
1 回答
1217 浏览

c# - Hangfire 重复作业不会立即开始

我正在使用 cron 表达式来创建重复性工作。我正在创建表达式以在一周的 3 天每半小时执行一次。执行是正确的,但它开始的时间不正确。假设作业的创建发生在下午 2 点 16 分,作业在下午 2 点 30 分开始执行。如果我配置为执行 2:20,那么作业也从下午 2:30 开始,理想情况下我想从 2:20 开始,每半小时重复一次。目前我没有找到从 2:25 开始并每半小时重复一次的方法。

有人可以让我知道为什么在使用 cron 表达式时会发生这种情况吗?有没有办法识别这种模式,以便我可以调整我的执行时间。cron 表达式是“*/30 * * 1,2 1,2,3”

@cocowalla:我使用 sql server 作为后端。我正在完全按照hangfire文档中给出的方式复制连接字符串,但没有查看轮询。除了这个还有其他原因吗?

0 投票
1 回答
1416 浏览

asp.net-core - 应用程序池回收后,Hangfire 重复作业停止

我使用 .NET Core 附带的 Windows Hosting 模块在 IIS 下运行 ASP.NET Core API (v 2.2)。我在startup.cs 中配置了Hangfire,有几个重复的工作。

API 的应用程序池会因为不活动而定期回收。但是,只要应用程序池被回收(出于任何原因),重复作业就会停止运行,直到第一个用户调用 api。

Hangfire 文档有解决方案,但它特定于 Full .NET,它可能不适用于 .NET Core。

我发现的解决方案之一是在控制台应用程序中运行重复作业,但随后我必须创建和维护另外一个应用程序。此外,除了重复作业之外,API 在内部创建后台作业以进行单向调用。例如

因此,如果我仅为重复作业创建控制台应用程序,我仍然需要在 API 中为后台作业配置 Hangfire。我试图避免在两个地方配置 Hangfire。

我在 ASP.NET Core 中有哪些选项可以使 API 始终运行?

更新 1
基于此处的讨论,我对应用程序池设置进行了更改

设置Regular Time Interval为 0

在此处输入图像描述

从默认值 20更改Idle Time-Out为 0 在此处输入图像描述

我会等几天看看这个设置是如何工作的

但是,我不确定不回收应用程序池是否是个好主意?任何建议

0 投票
0 回答
536 浏览

hangfire - Hangfire 仅在访问 hangfire 仪表板站点时有效,在后台无法继续工作

我已经在 IIS 服务器上发布了我的健康 API。我很担心,因为我的工作无法继续在 hangfire 仪表板上运行。当我检查并访问该站点时,它开始工作并获得成功,并且从浏览器关闭该站点后没有任何工作成功。

我正在寻找一种解决方案,说明如何使我的工作处于活跃状态并在挂火的后台以定义的频率工作以执行。

例如,我在 1 小时间隔内执行了 4 个作业,但是当我检查每 1 小时间隔内没有执行的作业记录时。但是当我访问该站点时,只有我可以看到该作业是最近执行的。

0 投票
0 回答
430 浏览

asp.net-mvc - .NET 框架 4.6 上的 HangFire 不适用于 SQL Server 2017 实例

我尝试将 HangFire 与 SQL Server 2017 一起使用,但它不起作用。

遇到的错误是

Hangfire.BackgroundJobClientException:'后台作业创建失败'

相同的设置适用于 SQL Server 2016。

即使有兼容性级别设置,也无法创建数据库

有人有同样的问题吗。

谢谢你。