Asp.net mvc 5 在DisposeOfChildContainer()上使用Microsoft.Unity时出现空引用异常

Asp.net mvc 5 在DisposeOfChildContainer()上使用Microsoft.Unity时出现空引用异常,asp.net-mvc-5,unity-container,asp.net-web-api2,Asp.net Mvc 5,Unity Container,Asp.net Web Api2,我正在开发mvc-5应用程序,它也有webapi。应用程序正在引发System.NullReference异常 错误消息 System.NullReferenceException: Object reference not set to an instance of an object. Stack trace at Unity.Mvc5.UnityDependencyResolver.DisposeOfChildContainer() at System.Web.HttpApplica

我正在开发mvc-5应用程序,它也有webapi。应用程序正在引发System.NullReference异常

错误消息

System.NullReferenceException: Object reference not set to an instance of an object.

Stack trace

at Unity.Mvc5.UnityDependencyResolver.DisposeOfChildContainer()

at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
这就是容器的构建方式,并在全局中从应用程序_Start调用为UnityBootstrapper.Initialize()-

公共静态类UnityBootTrapper
{
公共静态void Initialize()
{
var container=BuildUnityContainer();
DependencyResolver.SetResolver(新Unity.Mvc5.UnityDependencyResolver(容器));
GlobalConfiguration.Configuration.DependencyResolver=新的Unity.WebApi.UnityDependencyResolver(容器);
ControllerBuilder.Current.SetControllerFactory(新单元mvccontrollerfactory(container));
}
私有静态IUnityContainer BuildUnityContainer()
{
var container=new UnityContainer();
//MVC/WebApi控制器工厂
容器.注册表状态(新的UnitYapController激活器(容器,
新的DefaultHttpControllerActivator());
//NHibernate会议
RegisterInstance(SessionBuilder.Instance);
container.RegisterType(
新建CurrentRequestContextLifetimeManager());
container.RegisterType(
新建CurrentRequestContextLifetimeManager(),
新的注入构造函数(container.Resolve());
container.RegisterType(
新的InjectionFactory(c=>container.Resolve().CommonContext));
container.RegisterType(
新注射厂(
c=>container.Resolve()[container.Resolve().ClientCode]);
//存储库
container.RegisterType();
//业务逻辑
container.RegisterType();
//其他
container.RegisterType();
返回容器;
}
}
在global.asax.cs中-

protected void Application_PostAuthenticateRequest(object sender, EventArgs e)

    {
        var principalBusiness = DependencyResolver.Current.GetService<IMembershipPrincipalBusiness>();
    }
受保护的无效应用程序\u PostAuthenticateRequest(对象发送方,事件参数e)
{
var principalBusiness=DependencyResolver.Current.GetService();
}
该问题仅在生产中,由newrelic负责解决


这个异常是unity中的一个bug还是在这个实现中遗漏了什么。我从一周以来一直在搜索该问题,但没有得到任何结果。

我没有使用container.CreateChildContainer,但异常似乎试图处理子容器。不确定,这只是我的观点。和你一样,这也是为我们出现的,我们不使用子容器。Unity的哪个版本?
protected void Application_PostAuthenticateRequest(object sender, EventArgs e)

    {
        var principalBusiness = DependencyResolver.Current.GetService<IMembershipPrincipalBusiness>();
    }