Я работаю над веб-приложением asp.net mvc5 и установил Hangfire: -
Install-Package Hangfire
после этого я создал класс startup.css следующим образом: -
public class Startup
{
public void Configuration(IAppBuilder app)
{
}
}
затем внутри моего файла global.asax я попытался вызвать 2 метода действий; Index ()
и ScanServer()
следующим образом: -
HomeController h = new HomeController();
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
RecurringJob.AddOrUpdate(() => h.Index(), Cron.Minutely);
}
&
RecurringJob.AddOrUpdate(() => h.ScanServer(*****), Cron.Minutely);
теперь, когда Hangfire попытался вызвать метод действия Index(), который имеет следующее определение: -
public ActionResult Index()
я получил эту ошибку: -
Значение свойства JobStorage.Current не было инициализировано. Вы должны установить его перед использованием Hangfire Client или Server API.
в то время как когда Hangfire пытался вызвать метод действия ScanServer(), который является асинхронной задачей, которая имеет следующее определение: -
public async Task<ActionResult> ScanServer(string tokenfrom)
я получил эту ошибку: -
Асинхронные методы не поддерживаются. Пожалуйста, сделайте их синхронными, прежде чем использовать их в фоновом режиме.
так может ли кто-нибудь посоветовать, как исправить эти 2 проблемы?
Спасибо
ИЗМЕНИТЬ
я написал следующее внутри класса Startup: -
using Hangfire;
using Microsoft.Owin;
using Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ScanningFinal;
[assembly: OwinStartup(typeof(Startup))]
namespace ScanningFinal
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
GlobalConfiguration.Configuration
.UseSqlServerStorage("scanservice");
}
}
}
& вот строка подключения: -
<add name="scanservice" connectionString="data source=localhost;initial catalog=ScanningService;integrated security=True" providerName="System.Data.SqlClient"/>
но я все еще получаю эту ошибку: -
Значение свойства JobStorage.Current не было инициализировано. Вы должны установить его перед использованием Hangfire Client или Server API.
.UseSqlServer
? Вам нужно сделать это или использовать одну из других баз данных для хранения заданий, перечисленных в их документации, таких как Redis или MongoDB. - person mason   schedule 10.09.2015RecurringJob.AddOrUpdate(() => h.Index(), Cron.Minutely);
в метод запуска OWIN. Не размещайте их в разных местах. - person mason   schedule 10.09.2015