私のMS MVCアプリケーションにDIを導入していますが、カスタムコントローラファクトリからコントローラをインスタンス化できません。オーバーライドされた "GetControllerInstance"が呼び出されていないようです。MVC - 城ウィンザーコントローラファクトリの作成 - このオブジェクト用に定義されたパラメータのないコンストラクタなし
誰かが私に行方不明を教えてもらえますか?
マイコントローラーファクトリー:
public class WindsorControllerFactory : DefaultControllerFactory
{
public WindsorControllerFactory()
{
var controllerTypes = from t in AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes())
where typeof (IController).IsAssignableFrom(t)
select t;
foreach (Type controllerType in controllerTypes)
{
ApplicationContainer.Container.AddComponentLifeStyle(controllerType.FullName, controllerType,
LifestyleType.Transient);
}
}
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
if(controllerType !=null)
{
return (IController) ApplicationContainer.Container.Resolve(controllerType);
}
return base.GetControllerInstance(requestContext, controllerType);
}
}
}
のApplication_Start:
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory());
}
コントローラの工場がインスタンス化されると、コントローラーを解決するために使用されていないことと思われます。私は 'GetControllerInstance'にブレークポイントを設定しましたが、決してヒットしません。
結果は、このオブジェクトに対して定義されたパラメータなしコンストラクタです。私はこれにGetControllerInstanceを変更
:
private WindsorContainer _container;
public WindsorControllerFactory(WindsorContainer container)
{
_container = container;
_container.Register(AllTypes.Of<IController>().FromAssembly(
typeof(BaseFactoryController).Assembly).Configure(
c => c.Named(c.Implementation.Name.ToLowerInvariant()).LifeStyle.Transient));
}
は今、私はヌルcontrollerTypeを無視する必要がありますか?!例外は
アップデートを投げこれがコメントされていない場合:
//base.GetControllerInstance(requestContext、controllerType);
私の.jsファイルをコントローラとして扱い始める。どの
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
{
return null;
}
//base.GetControllerInstance(requestContext, controllerType);
return (IController) _container.Resolve(controllerType);
}
jsをコントローラとして扱うことについて、同じ質問、http://stackoverflow.com/questions/1598421/why-is-castle-windsor-trying-to-resolve-my-content-and-scripts-folderと同じ勧告-as-a-co –