私のMVC2プロジェクトでは、もともとNinject 2を使用し、このバージョンのNinjectControllerFactoryを作成しました。
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel kernel = new StandardKernel(new HandiGamerServices());
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
try
{
if (controllerType == null)
{
return base.GetControllerInstance(requestContext, controllerType);
// return null;
}
}
catch (HttpException ex)
{
if (ex.GetHttpCode() == 404)
{
IController errorController = kernel.Get<ErrorController>();
((ErrorController)errorController).InvokeHttp404(requestContext.HttpContext);
return errorController;
}
else
{
throw ex;
}
}
return (IController)kernel.Get(controllerType);
}
最も重要なのは、ErrorControllerの取得です。これにより、多数のHTTPエラーを適切に処理できます。
問題は、Nugetを介してMVC 2拡張機能にアップグレードしたため、NinjectControllerFactoryが既に提供されていることです。GetControllerInstanceの独自のオーバーライドを使用することは可能でしょうか?もしそうなら、どのように?