は、私はもともとNinject 2を使用してNinjectControllerFactoryこのバージョンの書いた:最も重要なのはこの古いNinject 2コードをNinject 3とMVC 2拡張(NinjectControllerFactory)で動作させるにはどうすればよいですか?私のMVC 2プロジェクトで
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);
}
を私は優雅にHTTPエラーの多くを処理することができます私のErrorController、の検索です。
問題は、Nugetを使用してMVC 2拡張にアップグレードしたため、NinjectControllerFactoryが既に提供されていることです。 GetControllerInstanceの独自のオーバーライドを使用することは可能でしょうか?もしそうなら、どうですか?
Ninject文を使用しているにもかかわらず、カーネルを '参照'するための工場を取得できないようです。また、IControllerにGetControllerSessionBehaviorがないことを示すコンパイルエラーが発生します。 MVC 2とMVC 3の違いは? –
はい、 'GetControllerSessionBehavior'はMVC3のみであると思われますので、単純に実装しないでください。あなたがカーネルを「見る」ことができないということが何を意味するのか分かりません。コンパイラエラーが出ていますか?エラーメッセージとは何ですか? –
ああ、申し訳ありません。うん、それはコンパイラエラーだった。今私はActivationExceptionを取得しています。私がGlobal.aspx.csでNinjectHttpApplicationを使用しようとするたびに発生するようです。私はNugetを介してNinject MVC 2をインストールしました.MvcApplicationをSystem.Web.HttpApplicationから派生させておくと動作します。私はバインディングにもNinjectWebCommonのRegsiterServicesを使用することを余儀なくされています。 –