Steven Sanderson の著書『Pro ASP.Net MVC Framework』を使用している場合は、WindsorControllerFactory クラスを変更して、DefaultControllerFactory によって公開されたインターフェイスを操作する必要があります。このクラスは MVC 2 Preview 2 で更新されました。最終リリースがどうなるかは誰にもわかりません。
変化する:
protected override IController GetControllerInstance(Type controllerType)
に:
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
また、MVC 2 Preview 2 フレームワークが非コントローラー クラスで渡されていないことを確認する必要があることもわかりました (コントローラー タイプとして favicon.ico で予期せず渡されていました)。したがって、更新された GetControllerInstance メソッドは次のようになります。
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
//Debug.Print("Controller: {0}, Action: {1}", requestContext.RouteData.Values["Controller"], requestContext.RouteData.Values["Action"]);
if (controllerType == null)
{
//Debug.Print("Is IController: {0}", (controllerType is IController));
//Debug.Print("Is null: {0}", (controllerType == null));
return null;
}
else
{
return (IController)container.Resolve(controllerType);
}
}
WindsorControllerFactory で「値を null にすることはできません」というエラーが発生する理由を確認したい場合に備えて、デバッグ コードを残しました。
この変更を行った後、Windsor は私のために働き始めました。うまくいけば、これは役に立ちます。
乾杯、ジェイソン