Hangfire 激活器未处理

2023-11-29

我遇到了 Hangfire 无法在 NET 5 上的 WebApi 中处理它实例的对象的问题。

这是我在“ConfigureServices()”中的配置(非常标准,顺便说一句):

services.AddScoped<ITestService, TestService>(); // I have also tried with "AddTransient()"

services.AddHangfire(x => x.UseSqlServerStorage(Configuration.GetConnectionString("Default")));
services.AddHangfireServer();

然后,我使用以下行在“Configure()”中配置重复作业:

public void Configure(IApplicationBuilder app,
                      IWebHostEnvironment env,
                      IHttpContextAccessor httpContextAccessor,
                      ITestService testService)
{
    // Omitting other configure code here

    RecurringJob.AddOrUpdate("Check", () => testService.Test(), Cron.Minutely); // You can try "*/1 * * * ? *" to speed it up
}

正如您所看到的,“ITestService”是通过 IoC 注入的。

仅供参考,“ITestService”是“IDisposable”。如果我在构造函数和“Dispose()”方法中都放置断点,则每个间隔都会调用构造函数,而永远不会调用“Dispose()”。

这对我来说是一个问题,因为服务本身还有其他依赖项,例如存储库(即:SQL 连接)。每当时间过去,应用程序就会开始崩溃,因为它耗尽了池中的连接:

失败:Hangfire.Processing.BackgroundExecution[0] 由于异常,Execution Worker 现在处于 Failed 状态,将在 00:05:00 以内重试执行 System.InvalidOperationException:超时已过期。从池中获取连接之前超时时间已过。发生这种情况的原因可能是所有池连接都在使用中并且已达到最大池大小。

如果我没记错的话,这个错误与未处理 SQL 连接有关。

那么,您认为我做错了什么吗?或者这可能是一个错误?

EDIT:

如果我将“this.Dispose()”放在 TestService.Test() 的末尾,并在那里手动处置存储库,则可以修复之前的错误。但我认为这不是一个合适的解决方案:S。


正如评论中所述,您应该使用:

RecurringJob.AddOrUpdate<ITestService>("Check", t => t.Test(), Cron.Minutely);

以这种方式调用该方法将触发依赖注入ITestServer并且实例将遵循预期的生命周期,并需要调用Dispose()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hangfire 激活器未处理 的相关文章

  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 适用于 Windows 的 CoffeeScript IDE - 尝试过 Titanium Studio 和 RubyMine

    我正在尝试找到一种在 Windows 上使用 CoffeeScript 的好方法 并且能够在 IDE 中将这些文件快速处理为 JavaScript RubyMine 如果我只是在 RubyMine 中打开一个 coffee 文件 这似乎可以
  • 在 UIPopover 内显示 UIDatePicker

    我正在使用以下代码来显示UIDatePicker在一个UIPopover当用户单击时显示UIButton 问题是 它显示在一个尴尬的位置 我想添加一个UIToolBar上面的datePicker有额外空间的地方 这将会有cancel and
  • 如何在 JavaFX Canvas 上禁用抗锯齿功能?

    目前我正在使用 JavaFX 开发一款 2D 游戏 该游戏是像素艺术的 不幸的是 由于抗锯齿 像素艺术变得模糊 有什么方法可以禁用 JavaFX 画布上的抗锯齿功能吗 我尝试过使用 SceneAntialiasing DISABLED 但它
  • Facade 和 Mediator 设计模式的区别?

    外观设计模式和中介设计模式有什么区别 我想了解在哪种情况下在这两种设计模式之间选择哪种设计模式 我浏览了以下链接 发现两者在用例方面都是相同的 立面设计模式 http www tutorialspoint com design patter
  • Java 使用 XStream 读取 XML

    我正在尝试使用 XStream 反序列化此 XML 文件 但收到此错误 Exception in thread main com thoughtworks xstream converters ConversionException Aut
  • 创建二维列表矩阵

    如何创建基于列表的矩阵1具有给定的行数和列数 例如 像 row 3 column 4 gt 1 1 1 1 1 1 1 1 1 1 1 1 这是使用列表理解的替代方法 让我们看一下基础知识 Prelude gt 2 x x lt 1 4 2
  • Asp.net MVC Razor如何显示两个模型字段的分组单选按钮

    我有一个简单的测验模型 我试图让用户从强类型视图中分组的两个单选按钮中选择正确答案 替代答案 但我使用的 lambda 表达式不起作用 我得到两个空白的单选按钮 我在这里和网上查看了几个问题 但我的模型是 IList 并且我找不到合适的示例
  • 如何根据下拉框 #1 的输入更改下拉框 #2?

    我有两个下拉菜单
  • 在 Eclipse 中运行 gtkmm 项目时出现“Gtk-WARNING **:无法打开显示:”

    我正在尝试在 Eclipse CDT 在 Ubuntu 上 中运行 gtkmm 项目 该项目编译正常 没有报告错误 但是当我尝试运行该项目时 控制台打印出此消息 Gtk WARNING cannot open display 如果我转到可执
  • Leaflet - 将控件放在 div 地图之外

    我制作了以下应用程序 http lae2 alwaysdata net carte exppng 我想将我的两个控件 leaflet control zoom 和 leaflet control layers 放在 div 地图之外 例如
  • 如何通过 C# 获取 Azure Log Analytics 工作区的工作区 ID

    如何通过 C 获取 Azure 中 Log Analytics 工作区的工作区 ID 从那以后我发现OperationalInsightsManagementClient也可以使用类 var client new OperationalIn
  • 如何在 mule 4 中将 ManagedCursorStreamProvider 转换为 JSOn 对象

    如何在 mule 中将 ManagedCursorStreamProvider 转换为 Json 对象 我写了一个java方法 它将Json对象作为输入 Request Payload a one b two 调用静态 arg0 paylo
  • Transformers PreTrainedTokenizer add_tokens 功能

    参考文档在 Huggingface 的很棒的变形金刚库中 我发现了add tokens功能 tokenizer BertTokenizer from pretrained bert base uncased model BertModel
  • 如何在QTableWidget中显示点击QPushButton的行

    我想删除行QPushButton被点击怎么可能我认为使用插槽是合理的 但如何做到这一点不知道 如果您有任何想法如何获取一行选定的按钮请分享 谢谢 这是我的桌子 这是我向 QTableWidget 添加行的代码 MainWindow Main
  • 使用本地图像在Windows Phone 8.1的webview中显示

    我在 Windows Phone 8 1 中创建了混合应用程序 我的一个页面使用了 webview 控件 它上面有一个 img 元素 我有一个小图像作为我的应用程序构建的一部分 复制到输出目录 设置为 始终复制 我已按照此页面的说明进行操作
  • 什么是软件框架? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 有人可以解释一下什么是软件框架吗 为什么我们需要一个框架 框架如何使编程变得更容易 我很
  • php 中 at-sign 的有效用例

    at 符号用于隐藏错误消息 据我所知 绝对没有使用它的用例或借口 您可以通过更改 php ini 设置来隐藏生产中的错误 同时仍将错误输出到日志文件 符号使其他程序员很难确定问题出在哪里 当您开发时 错误消息是您的朋友 快速发现错误并修复它
  • 需要列出 SQL Server 数据库中的所有触发器以及表名称和表架构

    我需要列出 SQL Server 数据库中的所有触发器以及表名称和表架构 我就快到了 SELECT trigger name name trigger owner USER NAME uid table schema table name
  • 有什么办法可以拯救脏画布吗?

    我正在使用 HTML5 画布制作视频屏幕截图 视频托管在其他地方 除了 toDataURL 之外一切正常 因为画布很脏 所以 我想知道 有什么办法可以将这个画布图像保存在计算机上吗 我认为答案是否定的 但希望有一些黑客来完成这件事 除了将视
  • Hangfire 激活器未处理

    我遇到了 Hangfire 无法在 NET 5 上的 WebApi 中处理它实例的对象的问题 这是我在 ConfigureServices 中的配置 非常标准 顺便说一句 services AddScoped