gpt4 book ai didi

c# - LightInject 尝试创建一个没有当前作用域的作用域实例

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:35 31 4
gpt4 key购买 nike

我(光注入(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: An error occurred when trying to create a controller of type 'MvcAPP.Controllers.HomeController'. Make sure that the controller has a parameterless public constructor. ---> System.InvalidOperationException: Attempt to create a scoped instance without a current scope. at LightInject.PerScopeLifetime.GetInstance(Func1 createInstance, Scope
scope) at DynamicMethod(Object[] ) at
LightInject.ServiceContainer.<>c__DisplayClass40.<WrapAsFuncDelegate>b__3f()
at LightInject.PerRequestLifeTime.GetInstance(Func
1 createInstance, Scope scope) at DynamicMethod(Object[] ) at LightInject.ServiceContainer.TryGetInstance(Type serviceType) at System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) --- End of inner exception stack trace --- at System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

我创建了几个小型测试 ASP MVC 项目来隔离异常,但没有成功。

Controller 按实例划分范围,每个实例中的所有对象都指定为 PerScopeLifetime。

我可以做一些调整,还是应该停止使用 PerScopeLifetime?我必须为我的 EF 上下文设置范围内的生命周期。

异常是在我的 Controller 完成构建之前抛出的,所以它出现了。

最佳答案

我想让你知道这个问题已经解决,从 NuGet 获取最新最好的应该可以解决你的问题。

最好的问候

伯恩哈德·里希特

关于c# - LightInject 尝试创建一个没有当前作用域的作用域实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560768/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com