2014-02-04 2 views
2

I (noob to light inject mvc) Я использую LightInject MVC в моем приложении asp.mvc 4 с отличными результатами, за исключением случайного исключения. Теперь я вижу это в предварительном производстве. Исключение составляет: System.InvalidOperationException: попытка создания экземпляра с областью действия без текущей области.LightInject Попытка создать экземпляр с областью без текущей области действия

Мой старт приложение код:

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 []) в LightInject.ServiceContainer.TryGetInstance (тип ServiceType) при System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create (RequestContext RequestContext, Тип controllerType) --- Конец внутреннего исключения трассировки стека --- на System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create (RequestContext RequestContext, тип controllerType) в System.Web.Mvc.DefaultControllerFactory. CreateController (RequestContext requestContext, String controllerName) в System.Web.Mvc.MvcHandler. ProcessRequestInit (HttpContextBase HttpContext, IController & контроллер, IControllerFactory & завод)
на System.Web.Mvc.MvcHandler.BeginProcessRequest (HttpContextBase HttpContext, AsyncCallback обратного вызова, объект состояния) на System.Web.HttpApplication.CallHandlerExecutionStep.System.Web .HttpApplication.IExecutionStep.Execute() на System.Web.HttpApplication.ExecuteStep (IExecutionStep шаг, Boolean & completedSynchronously)

Я создал несколько небольших тестовых проектов ASP MVC изолировать исключение без успеха.

Контроллеры указаны в каждом экземпляре, а все объекты в каждом экземпляре обозначаются PerScopeLifetime.

Есть ли способ настройки, который я могу сделать, или я должен прекратить использование PerScopeLifetime? Я должен обладать временем жизни для моих контекстов EF.

Исключение составляет до того, как мои контроллеры закончат строительство, поэтому оно появляется.

+0

Привет! Я автор LightInject, и я действительно хотел бы помочь вам. В GitHub есть аналогичная проблема, которая говорит о той же самой проблеме, с которой вы сталкиваетесь.https://github.com/seesharper/LightInject/issues/49 Я еще не смог воспроизвести это поведение, и был бы очень признателен, если бы вы могли придумать пример проекта, который вызывает ошибку. Какую версию LightInject вы используете? – seesharper

ответ

1

Я хочу, чтобы вы знали, что проблема решена, и получение последней и самой большой из NuGet должно решить вашу проблему.

С наилучшими пожеланиями

Bernhard Richter

Смежные вопросы