Hangfire不会在IIS中创建表

时间:2019-09-20 13:32:18

标签: sql-server asp.net-core hangfire

我已使用本指南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下运行应用程序时,为什么不创建表?

1 个答案:

答案 0 :(得分:0)

尝试在生产中手动创建数据库,而不添加任何表。在您的配置中,将其指向新创建的数据库。 hangfire bot可能具有建立数据库的权限。