问题标签 [hangfire]

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

c# - Hangfire.Autofac 与 MVC 应用程序 - 注入失败

我正在尝试创建一个简单的 Hangfire 测试,但它不起作用。这是所有重要的代码,以及我如何使用 Hangire.Autofac 对其进行配置。不知道我在这里缺少什么。我在 /hangfire dashbaord 中遇到的异常也在下面。

但是在仪表板中,我不断收到该任务的此错误:

失败 作业激活期间发生异常。Autofac.Core.Registration.ComponentNotRegisteredException

请求的服务“App.Services.AmazonSqsService”尚未注册。要避免此异常,请注册一个组件以提供服务,使用 IsRegistered() 检查服务注册,或使用 ResolveOptional() 方法解决可选依赖项。

0 投票
2 回答
5184 浏览

asp.net - 如何在 Azure 共享主机中启动 Hangfire(“始终开启”)?

我想将一个简单的共享主机 ASP.NET MVC 站点部署到 Azure(使用免费站点选项),它使用Hangfire运行计划任务。

问题是该站点仅在第一个请求时启动,因此Hangfire 直到那时才开始安排任务。使用 IIS 或专用 VM,您可以设置“始终开启”选项来预热站点。但这在共享主机中是不可能的。

我能做些什么呢?我想为最小的 VM 付费,称为 "A0",并在其中放置一个 ping 脚本以确保我的站点始终处于运行状态。这会起作用,但似乎有点矫枉过正。

还有其他好的选择吗?

0 投票
0 回答
318 浏览

sql - Hangfire 合并命令错误

我正在尝试使用没有 datetime2 数据类型的 SQL Server 2005 运行 Hangfire,所以我发现这个讨论非常有帮助。这解决了一个问题,但它打开了另一个问题。现在我得到错误:

找不到 SqlMapper.cs。System.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理。“合并”附近的语法不正确。

我在 GitHub 上找到了 SqlMapper.cs 的源代码。Dapper.1.38 包是我添加到项目中的包。即便如此,我还是收到一条消息,指出源文件与构建模块时不同。

无论如何,我进行了一些调试,并且能够找到导致异常的 SQL 命令。它是这个:

合并命令语法可能与 SQL Server 2005 不兼容,但我无法找出异常的原因。我怀疑 VALUES 子句。任何帮助,将不胜感激。

0 投票
2 回答
4496 浏览

c# - Hangfire 作业卡在队列中,并且在本地 IIS 中部署时永远不会得到处理

我在这里遇到了一个奇怪的问题。

我有一个简单的 MVC5 应用程序 + Hangfire 1.2.0。

当我使用 IIS Express 运行应用程序时,排队的作业在排队后成功处理。

但是当我切换到本地 IIS 时,排队的作业永远不会得到处理(执行)并停留在队列中。看起来后台服务器根本没有触发这项工作。

我正在使用 Windows 7 和 IIS 7.5。

我错过了一个重要的配置吗?

0 投票
0 回答
1176 浏览

asp.net - Hangfire Shutdown 不等待终止进程

我们已将 Hangfire 配置为使用教程中提供的 OWIN 作为 Web 应用程序的一部分运行。

我们通过我们提供的 API 将长时间运行的后台进程排入队列。我们运行的作业使用 .Net Process 类在后台初始化一个 R 进程。R 代码在内部产生了许多进程以更快地完成工作。当作业运行时,我们会在任务管理器中运行许多 Rscript 进程。

在手动回收我们的网络应用程序的应用程序池(查看进程重启的工作原理)时,Rscript 进程不会被杀死。我们有一个自定义的终止策略,可以摆脱代码中的所有 Rscript 进程。

在 kill 方法中,我们使用 Process.WaitForExit() 方法阻止。

当我们进行手动回收时,所有进程都不会被杀死。当前线程而不是阻止进程杀死只是在杀死几个 Rscript 进程后死亡。

hangfire 代码似乎只是取消了令牌,它似乎并没有等待正在侦听取消令牌的进程被杀死。拜托,有人可以建议我们如何让这个工作,如果需要更多详细信息,请告诉我?

0 投票
1 回答
3739 浏览

c# - 在 Hangfire.io 中登录到 NLog

我目前正在使用 Hangfire 在 Windows 服务中运行一些作业。这些作业是从 WebAPI 触发的。

当所有作业都成功时,我的系统目前工作正常,但是当发生异常时我没有得到任何日志记录。有没有人有使用自定义记录器从 Hangfire 接收消息的经验?

我的记录器是一个基本的 NLog 接口:

我正在我的 Windows 服务中配置我的 Hangfire 作业服务器,如下所示:

根据hangfire文档,我只是尝试通过添加所需的引用来遵循它,并在我的作业服务器设置后添加以下内容,但是仍然没有产生日志:

我只是throw new Exception()在作业调用的方法中模拟异常。该作业是在 webApi 调用中创建的,如下所示:

我正在寻找的是,是否有人在正确配置日志记录以与 Hangfire 一起使用方面有任何经验。

0 投票
0 回答
808 浏览

c# - 这是从后台工作人员访问 asp.net webapi 2 端点的最干净的方法吗?

概括:

我正在使用Hangfire以设定的时间间隔处理正在运行的后台作业,例如每晚检查过期的小部件。我想知道从正在运行的作业中访问 ASP.NET Web Api 2 端点(可能只是 GET 和 POST)的最佳方法。

东西的版本(如果这很重要)

  • .NET 4.5 MVC 5
  • 网络 API 2(.1?)
  • 托管站点 Windows azure
  • 8GB RAM见脚注 (1)
  • 使用 IIS express 的本地开发人员(或 VS2013 中的任何内置开发人员)

我的具体问题

  1. 这个实现是从后台任务之类的东西打开/关闭到我的 api 的连接的正确方法吗?
  2. 在下面的代码中,如何动态获取 client.BaseAddress 字符串(http://whatever.xxx)?能够像我在第二个伪代码片段中那样做一些事情会非常方便。

这是我从这篇博文中得到的代码

我想这已经很干净了,但是我对使用 HttpClient 类非常缺乏经验,而且我的大多数 api 交互都来自 javascript。

我想要做什么来获取 HttpClient.BaseAddress 字符串

对于根 else 分支来说,这没什么大不了的,这些字符串或多或少是恒定的。当我在本地运行时,尽管我希望它能够工作,无论我是 localhost:AnyPort 还是 IIS Express 的任何其他变体。


1:只是在开玩笑,只是想看看我是否可以让读取的声音大声'wtf'。成功请告知

0 投票
2 回答
4791 浏览

asp.net-mvc-5 - 发布项目后,Hangfire 不再工作

我正在使用 ASP.NET MVC 5。.NET Framework 的版本为 4.5。在我发布我的项目后,Hangfire 不再工作了。所以我的重复任务不会工作。当我输入 www.{myurl}/Hangfire 时,我得到一个空白站点。连接字符串不会引发错误。

那么问题可能出在哪里?当我在 localhost 上运行我的项目时,它工作正常。我在 localhost 和我发布的项目版本上使用相同的数据库。

0 投票
2 回答
6110 浏览

asp.net - ASP.NET 中的 Akka.NET 演员系统

我在 ASP.NET 中创建了一个带有 RESTful API 的服务,托管在 IIS 中。在这个服务中,我想用 Akka.NET 创建一个演员系统。

创建演员系统后:

抛出以下异常:

System.Web.dll 中出现“System.InvalidOperationException”类型的第一次机会异常附加信息:此时无法启动异步操作。异步操作只能在异步处理程序或模块内或在页面生命周期中的某些事件期间启动。如果在执行页面时发生此异常,请确保将页面标记为 <%@ Page Async="true" %>。此异常还可能表示尝试调用“async void”方法,在 ASP.NET 请求处理中通常不支持该方法。相反,异步方法应该返回一个任务,调用者应该等待它。

Actor 系统本质上是一个并发系统,在 Actor 之间交换异步消息。正如这里所解释的,这个actor系统将无法在 IIS 关闭 AppDomain 后继续存在,这可能就是引发上述异常的原因。

本文介绍了如何在 ASP.NET 中运行后台任务。但是,我不知道如何将它用于我的演员系统,因为我无法控制可能由 Akka.NET 创建的后台任务的生命周期。

有没有办法使这项工作,或者我应该放弃在 ASP.NET 应用程序中拥有演员系统的想法?

编辑:我还在 Stackoverflow 上看到了一个关于使用 Akka 实现 REST 服务的问题。欢迎任何关于类似于Spray 工具包但适用于 Akka.NET 的解决方案的建议。

0 投票
2 回答
3788 浏览

asp.net - 无法将 Hangfire 与 ASP.NET 网络表单网站一起使用

我已经使用 Visual Studio 2013 从 File > new > Website (not project ) 创建了空的 asp.net webforms 网站并安装了 Hangfire 库。然后我在 App_code 和根文件夹中添加了 Startup.cs 文件。然后我在 Global.ascx 文件中创建了简单的测试

当我尝试运行该网站时,它会返回

但是如果我创建一个项目并执行相同的步骤,它运行没有任何问题,任何人都可以提供帮助吗?