Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 设置ASP.NET MVC ControllerFactory无效_Asp.net Mvc_Inversion Of Control_Structuremap - Fatal编程技术网

Asp.net mvc 设置ASP.NET MVC ControllerFactory无效

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

我正在尝试使用StructureMap构建ASP.NET MVC2控制器,但ASP.NET似乎不记得我在Global.asax文件中调用了
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项目,并将代码从另一个项目复制到其中,从而解决了这个问题。从那以后一切都正常了。代码本身没有改变。