Asp.net mvc 设置ASP.NET MVC ControllerFactory无效
我正在尝试使用StructureMap构建ASP.NET MVC2控制器,但ASP.NET似乎不记得我在Global.asax文件中调用了Asp.net mvc 设置ASP.NET MVC ControllerFactory无效,asp.net-mvc,inversion-of-control,structuremap,Asp.net Mvc,Inversion Of Control,Structuremap,我正在尝试使用StructureMap构建ASP.NET MVC2控制器,但ASP.NET似乎不记得我在Global.asax文件中调用了ControllerBuilder.Current.SetControllerFactory 具体地说,我得到的错误是,我的控制器没有无参数构造函数。堆栈跟踪显示我的自定义ControllerFactory从未实际执行过 下面是我对该方法的调用,该方法应告诉ASP.NET要使用哪个ControllerFactory: Sub Application_Start
ControllerBuilder.Current.SetControllerFactory
具体地说,我得到的错误是,我的控制器没有无参数构造函数。堆栈跟踪显示我的自定义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?您的StructureMapControllerFactory是如何定义的?它有默认构造函数吗 如果不是,请尝试使用SetControllerFactory方法的第二个重载:
// First create the controllerFactory instance...
ControllerBuilder.Current.SetControllerFactory(controllerFactory);
您必须先设置controllerFactory,然后才能注册Outes…您好。我创建了一个新的VisualStudio项目,并将代码从另一个项目复制到其中,从而解决了这个问题。从那以后一切都正常了。代码本身没有改变。