Hangfire与ASP.NETMVC

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

我目前正在ASP.NETMVC5项目中使用Hangfire,该项目使用Ninject在RequestScope中使用相同的上下文

在Hangfire dashboard中,我会遇到如下随机错误:

System.Data.Entity.Core.EntityException:在提供程序连接上启动事务时出错。有关详细信息,请参见内部异常。-->System.Data.SqlClient.SqlException:不允许新事务,因为会话中正在运行其他线程

我怎样才能使实体、ASP.NET和Hangfire工作而不产生所有这些事务错误


我敢打赌这些错误可能发生在网络的另一端。

我们在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());