Asp.net web api Hangfire、Autofac和WebApi

Asp.net web api Hangfire、Autofac和WebApi,asp.net-web-api,autofac,hangfire,Asp.net Web Api,Autofac,Hangfire,我最近了解了Hangfire,但到目前为止还没有运气。我的项目使用autofac,因此我将HangFire.1.4.3和HangFire.autofac.1.1.0 nuget包添加到我的项目中。接下来是文档,我创建了Startup类并在那里注册了Hangfire public void Configuration(IAppBuilder app) { GlobalConfiguration.Configuration .UseSqlServe

我最近了解了Hangfire,但到目前为止还没有运气。我的项目使用autofac,因此我将HangFire.1.4.3和HangFire.autofac.1.1.0 nuget包添加到我的项目中。接下来是文档,我创建了Startup类并在那里注册了Hangfire

public void Configuration(IAppBuilder app)
{
      GlobalConfiguration.Configuration
                    .UseSqlServerStorage("NavigatorConnectionString");

       app.UseHangfireDashboard();
       app.UseHangfireServer();
}
之后,我更新了WebApiConfig,并在Hangfire中注册了我的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));
IObject someObject=MyObject();
var jobId=BackgroundJob.Enqueue(x
=>x.MyMethod(someObject));
我得到以下错误

System.InvalidOperationException异常 类型MyNamespace.IMyInterface不包含签名为MyMethod(IObject1)的方法` 在Hangfire.Storage.InvocationData.Deserialize()中
可能是什么问题?

这是一个悬而未决的工作问题。它序列化参数,如果是泛型,则无法将其重新序列化。解决方法是创建一个可以轻松序列化/理想化并运行所需代码的中介

您需要在Startup.cs文件中添加以下代码

private void ConfigureAutofac(HttpConfiguration配置,IAppBuilder应用程序)
{        
var requestTag=MatchingScopeLifetimeTags.RequestLifetimeScopeTag;
var jobTag=AutofacJobActivator.LifetimeScopeTag;
builder.RegisterType().As().InstancePerRequest();
}

我发现当接口具有泛型声明时解析不起作用。一种公共TResult MyMethod(ioobject查询),如果可能,您应该提供一个中介的示例。