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

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

我正在尝试将 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/

相关文章:

.net - .ToTitleCase 不适用于所有大写字符串

c# - 基于 HtmlAgilityPack.HtmlNode 获取 Html 元素

ASP.NET 开发服务器还是本地主机 IIS?

javascript - 从 javascript 访问模型属性

asp.net - 在事件目录中创建用户

.net - 编写可切换到 Web 的桌面程序

.net - 如何让 Mobilink 同步表以便最新更新的表不会被覆盖?

c# - 自动映射器 : almost always trim strings

c# - Mono 无法访问文件,即使 linux shell 可以在没有 root 的情况下访问

c# - 使用 Firefox 43 及更高版本创建新的 FirefoxDriver 再次超时