Значение свойства JobStorage.Current не было инициализировано. Вы должны установить его, прежде чем использовать Hangfire Client или Server API - PullRequest
0 голосов
/ 31 августа 2018

Я использую Hangfire в приложении MVC. Я отправляю напоминание пользователю о его / ее деловое свидание, встреча. Я установил Hangfire в моем приложении. Я настроил Hangfire в класс startup.cs. Но когда я запускаю приложение, оно выдает следующую ошибку, JobStorage. Текущее значение свойства не было инициализировано. Вы должны установить его перед использованием клиентского или серверного API Hangfire.

using Hangfire;
using Hangfire.SqlServer;
using Microsoft.Owin;
using Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using UKC.Data.Infrastructure;
using UKC.UI.Helper;

[assembly: OwinStartup(typeof(UKC.UI.App_Start.Startup))]
namespace UKC.UI.App_Start
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
            GlobalConfiguration.Configuration
               .UseSqlServerStorage("DbEntities");

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

        }
    }
}

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Для инициализации в ядре Asp.net

public static void InitializeHangFire()
        {
            var sqlStorage = new SqlServerStorage("connectionString");
            var options = new BackgroundJobServerOptions
            {
                ServerName = "Test Server"
            };
            JobStorage.Current = sqlStorage;
        }
0 голосов
/ 31 августа 2018

Есть такой же вопрос в этой ссылке . Я надеюсь, что это поможет вам.

Можете ли вы написать код, который выдает исключение? Я пишу ваш Startup класс и тестовый контроллер-ниже-. Работает нормально. Я не сталкивался ни с каким исключением.

[RoutePrefix("")]
public class HomeController : ApiController
{
    [Route(""), HttpGet]
    public void Get()
    {
        Hangfire.BackgroundJob.Enqueue(() => Tasks.DoIt("test"));

        Hangfire.BackgroundJob.Schedule(() => Tasks.InitializeJobs(), TimeSpan.FromSeconds(5));
    }
}

public static class Tasks
{
    public static void DoIt(string s)
    {
        Console.WriteLine(s);
    }

    public static void InitializeJobs()
    {
        Console.WriteLine(DateTime.Now.ToString());
    }
}
...