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

c# - 计划的作业没有自动执行

我正在使用 Hangfire 1.7.11 和这个过滤器,但我将指纹格式更改为使用SHA256Hash

我不知道为什么hangfire 没有执行预定的作业。我正在安排这样的工作:

  • 我的数据库是在 AWS 上运行的 SQL Server Express;
  • 我的前端和后端在同一台服务器上;
  • 我有一个正在运行的服务器。
  • 经常性工作看起来还可以;

您可以在下图中看到问题:

编辑 1

但是,这些作业是由另一个应用程序安排的。使用相同的想法:

我有一个使用相同数据库服务器但在不同数据库上的登台环境。它可以工作,但是对于生产来说,我还有更多的工作要处理。

编辑 2

昨天我删除了数据库,今天它运行良好。我们正在使用 AWS ECS Fargate 和 Autoscaling。有时会在必要时添加一些服务器。我不知道这会不会有问题。

0 投票
1 回答
316 浏览

asp.net - Hangfire 服务器在不活动时休眠

我已将应用程序池设置为:

StartMode - 始终运行 | 空闲超时(分钟) 0 | 预加载启用 = true

我不明白为什么我的 Hangfire 应用程序还在休眠。在我打开hangfire应用程序后,服务器也是在一秒钟前启动的。任何建议如何解决这个问题?

在此处输入图像描述

0 投票
1 回答
987 浏览

.net - Hangfire 重复作业 - 如何动态更改间隔

我有一个 .NET Web 应用程序,它使用 Hangfire 进行一些重复性工作。我想构建功能,以便用户可以通过应用程序更改作业的间隔。但似乎“更新”不起作用。

我已将 Startup.cs 配置为在应用程序运行时启动作业:

现在在控制器中,当用户单击更新按钮时将调用此方法。

但似乎这份工作没有得到更新。我仔细检查了 Hangfire.Hash 表,这项工作的 Cron 值根本没有改变。

我也尝试删除作业然后将其添加回来,也不起作用

我错过了什么?如何获取用户设置和更新的时间间隔?

0 投票
1 回答
450 浏览

hangfire - 从数据库脚本触发重复的 Hangfire 作业

我有一个非常复杂的 sql 脚本来清理我的数据库,并且会不时手动运行。脚本运行后,我必须立即开始一个经常性的挂火作业,该作业通常每天只执行一次。

为了不忘记运行脚本,我想直接从 sql 脚本触发执行。有没有一种简单的方法来修改一个hangfire 表来完成这个任务?

Hangfire核心版本为1.7.5

更新: 不幸的是,我没有找到任何包含重复作业的hangfire 表。因此,我想它们根本没有持久化。是否可以通过在 HangFire.Job 表中插入新行来运行作业?或者这是一个坏主意?

0 投票
0 回答
442 浏览

asp.net - Hangfire 仪表板“无法刷新统计信息:服务器响应 500(内部服务器错误)。尝试手动重新加载页面..”

我在 PPD 服务器上的 hangfire 仪表板上收到此错误,但在我的本地和开发人员上工作。

无法刷新统计信息:服务器响应 500(内部服务器错误)。尝试手动重新加载页面,或等待一分钟后自动重新加载。

我正在使用 asp.net 核心 3.0。

有没有办法解决这个问题?

0 投票
0 回答
31 浏览

hangfire - 为什么hangfire 作业会在多个服务器上运行?

为什么我们的工作要在多台服务器上运行?我们正在使用 v 1.7.6 并且作业在多于 1 台服务器上启动。这是我们的配置:

从我读到的,我们不应该在 1.7 中再使用slidingexpiration?

0 投票
0 回答
156 浏览

c# - 是否可以在 Hangfire 中同时使用存储(PostgreSQL 和 InMemory)?

当我想以两种不同的方式运行作业时,我试图解决这个问题,只针对一个服务实例和多个服务实例。所以我决定创建两个不同的队列,只将“本地”作业保留在“本地”队列和内存中(单个实例),并将“全局”作业保留在 PostgreSQL 的“全局”队列中(多个实例)

我有一些存储问题。我需要两个存储用于两个不同的队列。我需要“本地”存储(例如 InMemery)和“全局”存储(PostgreSQL)——队列的名称相同。因此,当我尝试在 IoC 中注册两个存储时,我只得到最后一个。例如,PostgreSQL。

我认为我可以编写自己的存储将称为“混合”,但这是很多工作,也许有人知道如何解决这个问题?

0 投票
1 回答
413 浏览

azure-active-directory - 如何在 ASP.NET Core 中使用 Hangfire 与 Azure 数据库和 Active Directory 密码身份验证

我们正在尝试在 ASP.NET Core WebApi 应用程序 (.NET 5) 中首次使用 Hangfire (v1.7.19)。以前他们都是老派的 ASP.NET,并且工作没有问题。

使用的 Hangfire 包(根据Hangfire 文档)是Hangfire.Core,Hangfire.SqlServerHangfire.AspNetCore. 我们也尝试只使用组合Hangfire包,但结果相同。

直接从该文档页面上的代码中提取,在 ConfigureServices 我们添加

它在运行时给出

connectionString值为

这适用于本地 SqlServer 和 LocalDb,但不适用于 AzureDB。连接字符串正是我们也用于 EntityFrameworkCore 5 的连接字符串(实际上,该值是从 分配的context.Database.GetConnectionString())。

我已经阅读了 AzureDB 和 .NET Core 存在问题的地方,但这些问题在很久以前就已经解决了。查看Hangfire.SqlServer包依赖项,我看到它在哪里使用System.Data.SqlClient,AzureDB 使用的当前文档都参考了Microsoft.Data.SqlClient,这让我认为支持 Active Directory 密码身份验证的增强功能不是在新包中进行的,System.Data.SqlClient而是在较新的Microsoft.Data.SqlClient包中进行的。如果是这种情况,我可以请求 Hangfire 替换它的 SqlClient 包,但在我这样做之前希望得到确认。

如果确实如此,有什么想法吗?在此期间我们可以做些什么来解决这个问题吗?

提前致谢。

0 投票
1 回答
229 浏览

sql-server - 挂火后台作业给出 SQL 异常:登录失败

我遵循的教程 - https://docs.hangfire.io/en/latest/getting-started/aspnet-core-applications.html

在启动类中配置服务

SqlException:无法打开登录请求的数据库“HangfireTest”。登录失败。用户“PENGUIN\PC”登录失败。

当我运行应用程序时出现此异常?

0 投票
2 回答
119 浏览

c# - Hangfire 和 ASP.NET Core 的服务定位器无法解析 AppDbContext

我正在尝试在 ASP.NET Core 5 Web 应用程序中使用 Hangfire。我正在使用依赖注入将各种依赖项传递给每分钟运行一次的 hangfire 任务。不幸的是,当我尝试使用实体框架核心执行查询时,我收到以下错误消息:

System.ObjectDisposedException: '无法访问已释放的上下文实例。此错误的一个常见原因是释放从依赖注入中解析的上下文实例,然后尝试在应用程序的其他地方使用相同的上下文实例。如果您在上下文实例上调用“Dispose”或将其包装在 using 语句中,则可能会发生这种情况。如果你使用依赖注入,你应该让依赖注入容器负责处理上下文实例。对象名称:“AppDbContext”。

这是我想用 Hangfire 每分钟运行的任务:

这是我的配置服务...

这是我在 Startup Configure 中实例化 Hangfire 任务的地方: