我正在尝试将 Hangfire 集成到我的 .NET Core Web 应用程序中。我已按照 Hangfire 快速入门上的说明安装所有必要的软件包。我还安装了一个名为 Hangfire MySql 的扩展,并为其安装了必要的软件包。
第 1 步表示“使用连接字符串构造函数参数创建 MySqlStorage 的新实例,并使用 UseStorage 方法将其传递给配置:”
GlobalConfiguration.Configuration.UseStorage(
new MySqlStorage(connectionString));
还请注意,“连接字符串中必须将允许用户变量设置为 true”。例如:server=127.0.0.1;uid=root;pwd=root;database={0};允许用户变量=True'
所以我当前的 Startup.CS 文件中“配置”服务内的 Hangfire 代码是这样的:
Hangfire.GlobalConfiguration.Configuration.UseStorage( 新的 MySqlStorage(connectionString));
app.UseHangfireDashboard();
app.UseHangfireServer();
但是 MySqlStorage 返回错误“MySqlStorage”不包含采用 1 个参数的构造函数”
如果我使用并定义我的连接字符串,请查看 Hangfire mySQL 的自述文件
例如
connectionString = "server=127.0.0.1;uid=root;pwd=root;database={0};Allow User Variables=True"
GlobalConfiguration.Configuration.UseStorage(
new MySqlStorage(
connectionString,
new MySqlStorageOptions
{
TablesPrefix = "Hangfire"
}));
应用程序会说没有错误,但我在启动时仍然收到错误。
我尝试输入连接字符串,但我输入的内容似乎不起作用。每次启动应用程序时,我都会收到错误:
“暴击:Microsoft.AspNetCore.Hosting.Internal.WebHost[6] 应用程序启动异常 System.InvalidOperationException:无法找到所需的服务。请通过在应用程序启动代码中调用“ConfigureServices(...)”内调用“IServiceCollection.AddHangfire”来添加所有必需的服务。 在 Hangfire.HangfireApplicationBuilderExtensions.ThrowIfNotConfigured(IApplicationBuilder 应用程序) 在 Hangfire.HangfireApplicationBuilderExtensions.UseHangfireDashboard(IApplicationBuilder 应用程序、字符串路径匹配、DashboardOptions 选项、JobStorage 存储) 在/Users/Admin/Desktop/Code Projects/Alerts/Alerts.API/Startup.cs中的Alerts.API.Startup.Configure(IApplicationBuilder应用程序,IHostingEnvironment env,ILoggerFactory loggerFactory):第178行“
想知道是否有人可以给我一个示例,说明如何使用启动的 mySqlStorage 连接来设置 Hangfire,让我查看 Hangfire 仪表板。
引用文献:https://github.com/arnoldasgudas/Hangfire.MySqlStorage 绞火:http://docs.hangfire.io/en/latest/quick-start.html
最佳答案
根据异常详细信息,似乎首先需要配置 Hangfire 服务,然后才能调用 app.UseHangfireDashboard()。
在你的Startup.cs文件中你应该有一个ConfigureServices(IServiceCollection services)方法,看来你必须在这里进行设置而不是使用GlobalConfiguration类,所以你可以尝试这个:
public void ConfigureServices(IServiceCollection services)
{
services.AddHangfire(configuration => {
configuration.UseStorage(
new MySqlStorage(
"server=127.0.0.1;uid=root;pwd=root;database={0};Allow User Variables=True",
new MySqlStorageOptions
{
TablesPrefix = "Hangfire"
}
)
);
};
}
关于c# - 如何为 Hangfire 的 mySQL 数据库设置 'connectionString'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54384732/