如何为Hangfire的mySQL数据库设置'connectionString'?

时间:2019-01-27 03:04:45

标签: c# asp.net .net .net-core hangfire

我正在尝试将hangfire集成到我的.NET核心Web应用程序中。我已通过安装所有必需的软件包来遵循Hangfire快速入门中的说明。我还安装了一个名为Hangfire MySql的扩展,并为此安装了必要的软件包。

步骤1说“使用连接字符串构造函数参数创建MySqlStorage的新实例,然后使用UseStorage方法将其传递给Configuration:”

 GlobalConfiguration.Configuration.UseStorage(
    new MySqlStorage(connectionString));

还要注意,“在连接字符串中必须将“允许用户变量”设置为true。例如:server=127.0.0.1;uid=root;pwd=root;database={0};Allow User Variables=True'

因此,我当前在Startup.CS文件中的“配置”服务中用于Hangfire的当前代码是:

Hangfire.GlobalConfiguration.Configuration.UseStorage(             新的MySqlStorage(connectionString));

    app.UseHangfireDashboard();
    app.UseHangfireServer();

但是MySqlStorage返回错误“ MySqlStorage'不包含带有1个参数的构造函数”

如果我使用并定义了我的connectionString,请查看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:line 178“

中的Alerts.API.Startup.Configure(IApplicationBuilder应用,IHostingEnvironment env,ILoggerFactory loggerFactory)

想知道是否有人可以给我一个示例,说明如何使用启动的mySqlStorage连接来设置Hangfire,让我查看Hangfire仪表板。

参考:https://github.com/arnoldasgudas/Hangfire.MySqlStorage Hangfire:http://docs.hangfire.io/en/latest/quick-start.html

1 个答案:

答案 0 :(得分:4)

根据异常详细信息,似乎首先需要配置Hangfire服务,然后才能调用app.UseHangfireDashboard()。

在Startup.cs文件中,您应该具有ConfigureServices(IServiceCollection services)方法,似乎您必须在此处进行设置,而不是使用GlobalConfiguration类,因此可以尝试以下操作:

orange