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