我(noob to light inject mvc)我在我的asp.mvc 4应用程序中使用LightInject MVC,除了偶尔的异常外,效果很好。现在我在预生产中看到了它。例外情况是: System.InvalidOperationException:尝试创建没有当前作用域的作用域实例。
我的应用开始代码是:
var container = new LightInject.ServiceContainer();
container.RegisterControllers();
container.RegisterAssembly(typeof(AppDDD.RegisterMe).Assembly, () => new PerScopeLifetime());
... scoped registrations
container.EnableMvc();
我得到了一个堆栈跟踪错误,如:
System.InvalidOperationException:尝试时发生错误 创建一个'MvcAPP.Controllers.HomeController'类型的控制器。使 确保控制器具有无参数的公共构造函数。 ---> System.InvalidOperationException:尝试创建范围实例 没有当前范围。在 LightInject.PerScopeLifetime.GetInstance(Func
1 createInstance, Scope scope) at DynamicMethod(Object[] ) at LightInject.ServiceContainer.<>c__DisplayClass40.<WrapAsFuncDelegate>b__3f() at LightInject.PerRequestLifeTime.GetInstance(Func
1 createInstance, 范围范围)在DynamicMethod(Object [])at LightInject.ServiceContainer.TryGetInstance(输入serviceType)at System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create(的RequestContext requestContext,Type controllerType)---内部异常结束 堆栈跟踪--- at System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create(的RequestContext requestContext,输入controllerType)at System.Web.Mvc.DefaultControllerFactory.CreateController(的RequestContext requestContext,String controllerName)at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext,IController&amp;控制器,IControllerFactory&amp;厂)
在System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase) httpContext,AsyncCallback回调,对象状态)at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤, 布尔和放大器; completedSynchronously)
我创建了几个小型测试ASP MVC项目来隔离异常但没有成功。
控制器是每个实例的范围,每个实例中的所有对象都被指定为PerScopeLifetime。
我可以进行调整,还是应该停止使用PerScopeLifetime?我必须为我的EF上下文设定生命周期。
在我的控制器完成构建之前抛出异常,因此它出现了。
答案 0 :(得分:2)
我希望您知道问题已经解决,从NuGet获取最新和最好的应该解决您的问题。
祝你好运
Bernhard Richter