如何更新Hangfire以使用更新的DLL

时间:2016-12-09 17:39:59

标签: c# asp.net sql-server hangfire

背景

我继承了一个实现hangfire的ASP.NET(C#)应用程序。 该解决方案包括HangfirePortal和针对不同工作的多个项目。 此解决方案中的每个项目都引用OurFramework,我们最近更新了OurFramework以使用新的SQL服务器。 引用OurFramework的其他应用程序更新得很好并且它使用新的SQL服务器,但这个带有hangfire的应用程序仍在使用旧的SQL服务器,这意味着(我相信)它对{{1的引用是旧版本。 我已经试图解决这个问题好几天了。我对此有任何建议。

我做了什么

  • 将Hangfire数据库从旧SQL服务器移至新SQL服务器(使用SQL比较)
  • 重新发布HangfirePortal
  • 重新引用OurFramework(已删除并再次添加)
  • 重新构建应用程序并在服务器上复制更新的文件以进行Hangfire(这是我在对客户端进行更改并更新服务器时所做的工作,该服务器运行良好)
  • 使用C#Interactive测试框架 - 这导致使用更新的框架。工作得很好(因为它将数据保存到新的SQL服务器)
  • 调试了使用OurFramework中的类的单元测试 - 这导致使用了更新的框架。工作得很好
  • 使用其他应用程序测试了同一个类 - 工作得很好

由于它似乎在本地工作正常,而且其他应用程序工作正常,我认为hangfire项目没有在服务器中正确更新。

代码

这是客户端中的工作示例。 该项目引用了OurFramework,这是一个已被更改为使用新数据库的文件

OurFramework.Operations

当我在本地运行此代码时,我发现它使用新数据库并且日志成功保存到新数据库。所以看起来它使用的是框架的更新版本。

还有一个名为Core的项目,它将所有.dll文件保存在名为using OurFramework.Operations.Logging; public class SampleJob { public void TestLog() { LogWriter _log = new LogWriter(); _log.TryLog("HangfireTest", "This should be stored in the new database"); } } 的目录中。 此libraries包含以下文件:

  
      
  • OurFramework.Operations.dll
  •   
  • OurFramework.Operations.dll.config
  •   
  • OurFramework.Operations.pdb
  •   
  • OurFramework.Data.dll
  •   
  • OurFramework.Data.dll.config
  •   
  • OurFramework.Data.pdb
  •   

libraries列出OurFramework.Data.dll.config的connectionString,它指向新数据库。

重建完整个解决方案后,我会将修改过的文件复制到OurFramework.Operations.Logging并粘贴到MySolution\bin\Debug

1 个答案:

答案 0 :(得分:0)

Hangfire需要它自己的专用服务器,需要连接到它才能工作。您需要采取的唯一步骤是创建和连接此类服务器,hangfire应该创建所有必需的表和列。话虽如此,你的困境让我相信你的hangfire项目只是使用旧框架的旧连接字符串。看一下hangfire中的连接字符串,看看它指向的位置。

看看这些资源:

http://docs.hangfire.io/en/latest/configuration/using-sql-server.html

http://docs.hangfire.io/en/latest/background-processing/processing-background-jobs.html