Hangfire显示在同一台服务器上运行了两个实例v.1.5.3-导致错误

5
我已经按照此处指定的文档使应用程序始终运行并启用了服务自动启动。对于配置,我使用了这里指定的文档,并且在此应用程序中,我正在使用Hangfire版本1.5.3。我有另外两个Hangfire应用程序在同一服务器上运行,一个使用Hangfire v.1.4.1,另一个使用1.4.5。这两个应用程序都可以完美运行。每个应用程序都在自己的应用程序池下运行,代码没有任何区别。
那个不起作用的应用程序在端口号后添加了GUID,如下图所示。这个应用程序有时无法自动启动,我认为这与两个服务器实例有关。
我知道Hangfire已经修改了ServerName的某些内容,因为如果使用“BackgroundJobServerOptions”和“ServerName”变量,您会收到过时的消息:
“Server Id现在是自动生成的,因此此选项不再有意义。将在2.0.0中删除。”

有人经历过这种情况并成功解决了吗?

注意:我没有在任何应用程序中使用BackgroundJobServerOptions,并且我已尝试重新启动服务器。

enter image description here

工作的两个应用程序:

enter image description here

enter image description here

1个回答

12

找到了问题。在1.5.3版本中,可能是1.5 <,如果您已经在Global.asax中注册了应用程序启动,那么在您的OWIN Startup类中不应使用app.UseHangfireServer()。当我像下面那样注释掉代码后,一切都开始正常工作了。

public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);

            //GlobalConfiguration.Configuration.UseSqlServerStorage("DefaultConnection");
            //app.UseHangfireServer();
        }
    }

更新:

我正在按照这个教程进行操作:

http://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html

Global.asax.cs:

protected void Application_Start(object sender, EventArgs e)
{
    HangfireBootstrapper.Instance.Start();
}

protected void Application_End(object sender, EventArgs e)
{
    HangfireBootstrapper.Instance.Stop();
}

那么你把它移动到Global.asax.cs Application_Start()了吗? - Serj Sagan
@SerjSagan 正确的,已更新为 Global.asax.cs 中的值和我所遵循的教程。 - Ogglas
如果您正在使用OWIN启动类,则可以删除Global.asaxGlobal.asax.cs文件 - 您不需要它们。 - Matt Kocaj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接