2015-05-07 7 views
1

Мне нужно, чтобы метод запускался каждые 30 секунд - я просто собирался сделать одну страницу, которая была ограничена IP, и называть ее через CURL по запланированной задаче каждые 30 секунд.Могу ли я использовать Hangfire с первым приложением существующего кода фреймворка сущности?

Я читал статью и узнал о hangfire - это кажется удивительным!

Итак, у меня есть существующее приложение, которое построено на Entity Framework Code First - я попытался использовать настройки по умолчанию для hangfire со стандартной базой данных, однако я продолжаю получать желтый экран с «логином для пользователя».

Итак, мне было интересно, есть ли быстрый способ сделать это просто работать в стандартных таблицах фреймворка сущностей \ single DbContext, или мне лучше просто предоставить ему свою собственную базу данных и логин?

Для обновления в соответствии с комментарием:

Я использую совершенно новый MVC приложения и просто установлен замедленное воспламенение. Строка соединения:

<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(); 

Однако, при запуске, я получаю:

enter image description here

Когда я удалить эти три строки из класса запуска , приложение работает как обычно - поэтому я не понимаю, что делает фальшивка, которая не может подключиться, когда может работать EF.

+0

Как настроить соединительную строку для Hangfire? Я не думаю (ну, я уверен, что ...) ваша проблема имеет какое-либо отношение к th EF –

+0

Это был мой главный вопрос - я нацелился на строку подключения по умолчанию, которая используется с инфраструктурой сущности, и я получив ошибку, подключающуюся к БД (которая отлично работает с EF) ... и даже если я получу эту работу, я беспокоюсь, что такие вещи, как перенос DB, испортит ее. – Wil

+0

Я не думаю, что у вас будут проблемы с использованием той же строки подключения –

ответ

-2

Возможно, это связано с тем, что вы используете localDB для своего проекта. Очевидно, что если вам нужно создать «Рабочие места» и «Застревание», как-то напоминает Message Queu, необходимо как-то быстрое решение для хранения. LocalDB ничего, но быстро и, вероятно, не хватает многих функций, на которые опирается Hangfire.

+0

На самом деле документация Hangfire утверждает, что поддержка Microsoft SQL Server 2008 R2 (любая версия, включая LocalDB), а затем и Microsoft SQL Azure" (http: // docs .hangfire.io/ru/latest/configuration/using-sql-server.html) –

+0

Yeap, но все зависит от того, что такое ваш LocalDB verison. Вопрос будет. У вас есть SQL Server 2008R или выше, установленный на вашем компьютере. Нет Management Studio, которая будет работать с установленным сервером. Я использовал Management Studio 2008R на SQL Server 2005 года и не имел datetime2. – ErMasca

1

Кажется, что Hangfire нуждается в том, чтобы база данных была уже создана. В моем случае, я просто убедиться, что он уже инициализирован:

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

Что это делает:

  • Создание БД
  • Run назначенный инициализатор (если только мы называем CreateIfNotExists мы не будем имеют правильный результат в базе данных)
  • Конфигурация Hangfire для использования только что созданного db (MyContext использует такое же имя строки подключения)