3

我有一个 Web 应用程序,它具有 Page1.aspx,它执行 task1,然后以 fireAndforget 方式将 task2 排入调度程序。

我正在使用 Hangfire,一切都已安装并正常工作,但只有一次doLongJob()没有参数(测试时)。然后我添加了一个参数(我将添加更多)。之后我面临这些错误

Page1.aspx.cs

string strMsgID = //task1 returns a value;
BackgroundJob.Enqueue(() => doLongJob(strMsgID));

public void doLongJob(string strMsgID)
{
    int status = //task2(strMsgID);
    while( status == 2)
    {
        Thread.Sleep(10000);
        status = //task2(strMsgID);
        }
    }
}

启动.cs

using Hangfire;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(erp.Startup))]
namespace erp
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {

            app.UseHangfireDashboard();

            app.UseHangfireServer();

        }
    }
}

全球.asax.cs

protected void Application_Start(object sender, EventArgs e)
{
    GlobalConfiguration.Configuration.UseStorage(new MySqlStorage("hangfire"));
}
4

2 回答 2

0

您是否仔细检查了失败作业的日期?

我有一个类似的问题——原来我只是在看以前同样失败的工作。因为这是最近失败的工作,所以我没想过要检查它是否比看起来更老。

于 2018-12-19T07:33:52.703 回答
0

我有一个类似的问题,结果是来自存储连接。

在您的代码中,我认为您正在传递一个字符串"hangfire",而您应该传递连接字符串

GlobalConfiguration.Configuration.UseStorage(new MySqlStorage(connectionString));

您可以在此处找到更多使用 hangfire 配置 MySQL 的选项

于 2018-05-09T10:52:07.533 回答