Hangfire与ASP.NETMVC
我目前正在ASP.NETMVC5项目中使用Hangfire,该项目使用Ninject在RequestScope中使用相同的上下文 在Hangfire dashboard中,我会遇到如下随机错误: System.Data.Entity.Core.EntityException:在提供程序连接上启动事务时出错。有关详细信息,请参见内部异常。-->System.Data.SqlClient.SqlException:不允许新事务,因为会话中正在运行其他线程 我怎样才能使实体、ASP.NET和Hangfire工作而不产生所有这些事务错误Hangfire与ASP.NETMVC,asp.net,asp.net-mvc,entity-framework,hangfire,Asp.net,Asp.net Mvc,Entity Framework,Hangfire,我目前正在ASP.NETMVC5项目中使用Hangfire,该项目使用Ninject在RequestScope中使用相同的上下文 在Hangfire dashboard中,我会遇到如下随机错误: System.Data.Entity.Core.EntityException:在提供程序连接上启动事务时出错。有关详细信息,请参见内部异常。-->System.Data.SqlClient.SqlException:不允许新事务,因为会话中正在运行其他线程 我怎样才能使实体、ASP.NET和Hangf
我敢打赌这些错误可能发生在网络的另一端。我们在Ninject的另一端也遇到了类似的问题。因此,我们实际上为Hangfire创建了一个单独的内核,其中所有内容都绑定在线程范围内。大概是这样的:
public class NinjectHangfire
{
public static IKernel CreateKernelForHangfire()
{
var kernel = new StandardKernel(/*modules*/);
try
{
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel).InThreadScope();
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>().InThreadScope();
//other bindings
}
catch
{
kernel.Dispose();
throw;
}
}
}
GlobalConfiguration.Configuration.UseNinjectActivator(NinjectHangfire.CreateKernelForHangfire());