У меня есть консольное приложение для тестирования HangFire. Вот код:

using System;
using Hangfire;

namespace MyScheduler.ConsoleApp
{
    internal static class Program
    {
        internal static void Main(string[] args)
        {
            MyMethod();

            Console.WriteLine("[Finished]");
            Console.ReadKey();
        }

        private static void MyMethod()
        {
            RecurringJob.AddOrUpdate(() => Console.Write("Easy!"), Cron.Minutely);
        }
    }
}

Но это вызывает исключение во время выполнения:

Дополнительная информация: Значение свойства JobStorage.Current не было инициализировано. Вы должны установить его, прежде чем использовать Hangfire Client или Server API.

Поэтому мне нужно место для работы, чтобы запустить это. Но все примеры в хранилище SQL и т. Д. Есть ли способ запустить этот пример с какой-то памятью?

JobStorage.Current = new SqlServerStorage("ConnectionStringName", options);  
// to  
JobStorage.Current = new MemoryDbStorage(string.Empty, options);  
26
Lost_In_Library 4 Апр 2017 в 15:04

2 ответа

Лучший ответ

Для этого вы можете использовать Hangfire.MemoryStorage.

Просто добавьте этот пакет nuget.

И тогда вы можете использовать его как -

GlobalConfiguration.Configuration.UseMemoryStorage();
46
Yogi 4 Апр 2017 в 12:17

Как сказал Йоги, вы можете использовать Hangfire.MemoryStorage или Hangfire.MemoryStorage.Core (для .Net Core).

В этом ответе отсутствует полный код (для .Net Core), который необходимо поместить в ConfigureServices (..):

var inMemory = GlobalConfiguration.Configuration.UseMemoryStorage();
services.AddHangfire(x => x.UseStorage(inMemory));
3
goamn 3 Авг 2017 в 03:43