2011-02-10 6 views
3

StructureMapを使用してASP.NET MVC2コントローラを構築しようとしていますが、ASP.NETはGlobal.asaxファイル内でControllerBuilder.Current.SetControllerFactoryを呼び出したことを覚えていないようです。ASP.NET MVC ControllerFactoryの設定は無効です

具体的には、私のコントローラにパラメータのないコンストラクタがないというエラーが発生します。スタックトレースは私のカスタムControllerFactoryが決して実際には実行されなかったことを示しています。ここで

はControllerFactoryが使用するASP.NETを教えてください方法の私の呼び出しです:

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を忘れているのはなぜですか?

答えて

2

StructureMapControllerFactoryはどのように定義されていますか?それはデフォルトのコンストラクタを持っていますか?

ない場合は、SetControllerFactory方法の2番目のオーバーロードを使用してみてください:

// First create the controllerFactory instance... 

ControllerBuilder.Current.SetControllerFactory(controllerFactory); 
+0

こんにちは。私はこれを新しいVisual Studioプロジェクトを作成して修正し、他のプロジェクトからコードをコピーしました。それ以降はすべてがうまくいった。 コード自体は変更されていません。 –