我已使用本指南https://docs.hangfire.io/en/latest/getting-started/aspnet-core-applications.html在ASP.Core 2.2项目中安装了Hangfire。
当我删除MyProject_dev
MSSQL数据库并运行Update-Database
时,只会创建我的自定义表。运行项目后,将添加Hangfire表。
在appsettings.production.json
中,我已将数据库配置为MyProject_prod
,然后单击 Folder 发布并选中了 Entity Framework Migrations ,因此构建过程可以使用我需要应用于EFSQLScripts
数据库的SQL在MyProject_prod
文件夹中创建 .sql 文件。
问题在于.sql文件仅包含我的自定义表。当我运行IIS站点时,未在MyProject_prod
数据库中创建Hangfire表,而在本地使用 F5 运行项目时,则在MyProject_dev
中创建Hangfire表如果它们不存在。查看日志,我发现已建立到MyProject_prod
数据库的连接,错误是:
[ERR] Execution BackgroundServerProcess is still in the Failed state for 00:20:45.1406056 due to an exception, will be retried no more than in 00:00:15
System.Data.SqlClient.SqlException (0x80131904): Invalid object name 'HangFire.Server'.
我可以从我的MyProject_dev
数据库中导出表,并将它们导入MyProject_prod
数据库中,但是我认为这不是正确的方法。在IIS下运行应用程序时,为什么不创建表?
答案 0 :(得分:0)
尝试在生产中手动创建数据库,而不添加任何表。在您的配置中,将其指向新创建的数据库。 hangfire bot可能具有建立数据库的权限。