У меня есть приложение MVC 3 с this той же проблемой. Я использую Ninject для инъекции зависимостей. Я не могу проследить, какой контроллер имеет проблему, вчера он сломался, и я провел целый день, пытаясь найти. В приложении более 60 контроллеров. Исключение не может быть обнаружено или отлажено, и трассировка не дает сколько-нибудь значимой информации о проблемном контроллере источника. Никакое действие для любого контроллера не может быть доступно без исключения этого исключения.MVC 3 Исключение: убедитесь, что у контроллера есть беззаторный публичный конструктор
Кто-нибудь знает, как я могу определить фактического контроллера, имеющего проблему?
Благодаря
Внутренняя Исключение:
System.MissingMethodException: No parameterless constructor defined for this object.
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean
noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType)
Трассировка стека:
at System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType)
at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(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.<>c__DisplayClass6.<BeginProcessRequest>b__2()
at System.Web.Mvc.SecurityUtil.<>c__DisplayClassb`1.<ProcessInApplicationTrust>b__a()
at System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f)
at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action)
at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust[TResult](Func`1 func)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state)
at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
'Никакие действия для любого контроллера не могут быть доступны без исключения этого исключения. '. Это похоже на то, что вы вводите в контроллер _every_, или фильтр действий, который используется во всех контроллерах, нарушен (т.е. отсутствует зависимость). Один сломанный контроллер не должен разрушать всю систему. –
Хм, это может быть ничего, так как я не уверен, что будет выглядеть трассировка стека, если на самом деле он использует NInject для разрешения контроллера, но для меня это похоже на использование активатора по умолчанию вместо NInject. Вы уверены, что NInject правильно зарегистрирован? –
Да, определенно не используется Ninject. См. Строку во внутреннем исключении, которое говорит 'System.Activator.CreateInstance' –