Недавно я узнал о Hangfire, но до сих пор не повезло. Мой проект использует autofac, поэтому я добавил HangFire.1.4.3 & HangFire.Autofac.1.1.0 пакеты nuget для моего проекта. Вслед за документацией Я создал класс запуска и зарегистрирован замедленное воспламенение тамHangfire, Autofac и WebApi
public void Configuration(IAppBuilder app)
{
GlobalConfiguration.Configuration
.UseSqlServerStorage("NavigatorConnectionString");
app.UseHangfireDashboard();
app.UseHangfireServer();
}
После этого я обновил WebApiConfig и зарегистрировал свой Autofac контейнер в замедленном воспламенении
private static void RegisterDependencies(HttpConfiguration config)
{
var builder = new ContainerBuilder();
...
var container = builder.Build();
...
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
Hangfire.GlobalConfiguration.Configuration.UseAutofacActivator(container);
}
Когда я пытаюсь запустить замедленное воспламенение работы как
IObject someObject = MyObject();
var jobId = BackgroundJob.Enqueue<IMyInterface>(x
=> x.MyMethod(someObject));
Я получаю следующую ошибку
системы. InvalidOperationException Тип MyNamespace.IMyInterface не содержит метода с сигнатурой MyMethod (IObject1) ` в Hangfire.Storage.InvocationData.Deserialize() В чем может быть проблема?
Я понял, что решение не работает, когда интерфейс имеет общее объявление. Сорт public TResult MyMethod (IObject query) –
vityanya