Я пытаюсь собрать свои контроллеры ASP.NET MVC2 с использованием StructureMap, но ASP.NET, похоже, не помнит, что я назвал ControllerBuilder.Current.SetControllerFactory
в моем файле Global.asax.
В частности, я получаю сообщение об ошибке, что у моего контроллера нет конструктора без параметров. Трассировка стека показывает, что мой пользовательский ControllerFactory
фактически никогда не выполнялся.
Вот мой вызов метода, который должен сообщить ASP.NET, какой ControllerFactory использовать:
Sub Application_Start()
RegisterRoutes(RouteTable.Routes)
ControllerBuilder.Current.SetControllerFactory(GetType(StructureMapControllerFactory))
BootStrapper.RegisterDependencies()
End Sub
А вот и исключение, которое я получаю.
[TargetInvocationException: Exception has been thrown by the target of an invocation.]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +86
System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +230
System.Activator.CreateInstance(Type type, Boolean nonPublic) +67
System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +80
Почему ASP.NET забывает, какой ControllerFactory использовать?