1

我需要让一个方法每 30 秒运行一次 - 我只是要创建一个受 IP 限制的页面,并每 30 秒通过 CURL 在计划任务上调用它。

我正在阅读一篇文章并了解了hangfire - 看起来很棒!

因此,我有一个基于 Entity Framework Code First 的现有应用程序 - 我尝试使用标准数据库的默认 hangfire 设置,但是我不断收到“用户登录失败”黄屏。

所以,我想知道,有没有一种快速的方法可以让它在标准实体框架表\单个 DbContext 中工作,或者,我最好只给它自己的数据库和登录名?

根据评论更新:

我正在使用一个全新的 MVC 应用程序并简单地安装了 hangfire。连接字符串是:

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-myproject-20150404061144;Integrated Security=True" providerName="System.Data.SqlClient" />

我补充说:

        GlobalConfiguration.Configuration.UseSqlServerStorage("DefaultConnection");
        app.UseHangfireDashboard();
        app.UseHangfireServer();

但是,在启动时,我得到:

在此处输入图像描述

当我从启动类中删除这三行时,应用程序运行正常 - 所以,我不明白 hangfire 在做什么,当 EF 可以连接时无法连接。

4

2 回答 2

2

似乎 Hangfire 需要已经创建数据库。就我而言,我只是确保它已经初始化:

using (var context = new MyContext())
{
   context.Database.Initialize(false);
}
Hangfire.GlobalConfiguration.Configuration.UseSqlServerStorage("EFConnectionStringName");

这是做什么的:

  • 创建数据库
  • 运行指定的初始化程序(如果我们只调用CreateIfNotExists我们将不会在数据库中获得正确的结果)
  • 配置 Hangfire 以使用新创建的数据库(MyContext使用相同的连接字符串名称)
于 2016-11-27T09:57:03.393 回答
-3

这可能是由于您正在为您的项目使用 localDB。显然,如果您需要创建 Jobs 并且 Hangfire 以某种方式类似于 Message Queu,则需要一种以某种方式快速的存储解决方案。LocalDB 一点也不快,而且可能缺少 Hangfire 所依赖的许多功能。

于 2015-06-08T14:31:47.670 回答