2

Bootstrapper を Ninjectで使用しようとしています。Ninject.MVC3Ninject コンテナーを nuget から初期化するためにインストールし、次のようなテスト モジュールを作成しました。

public class TestNinjectModule : NinjectModule
{
    public override void Load()
    {
        Bind<DBEntities>().ToSelf().InRequestScope();
        Bind(typeof(IGenericRepository<>))
              .To(typeof(GenericRepository<>)).InRequestScope();
        Bind<ISystemRepository>().To<SystemRepository>().InRequestScope();
        Bind<IUnitOfWork>().To<UnitOfWork>();
    }
}

私も私の中にStart()呼び出しを含めましたGlobal.asax.cs

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        Bootstrapper.With.Ninject().Start();
        Bootstrapper.With.AutoMapper().Start();
    }
}

ただしActivationException、依存関係のあるコントローラーが呼び出されたときに Ninject から取得し、TestNinjectModule.Load()メソッドが呼び出されなかったことを通知します。どうすれば解決できますか?

例外メッセージ:

IUnitOfWork のアクティブ化でエラーが発生しました 一致するバインディングが利用できず、型は自己バインド可能ではありません。アクティベーション パス: 2) 依存関係 IUnitOfWork を、タイプ > TreasurySystemController のコンストラクターのパラメーター unitOfWork に注入する 1) SystemController の要求

提案: 1) IUnitOfWork のバインディングを定義したことを確認します。2) バインディングがモジュールで定義されている場合は、モジュールがカーネルにロードされていることを確認します。3) 誤って複数のカーネルを作成していないことを確認してください。4) コンストラクター引数を使用している場合は、パラメーター名が >constructors パラメーター名と一致していることを確認してください。5) モジュールの自動ロードを使用している場合は、検索パスとフィルターが正しいことを確認してください。

スタックトレース:

c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs:line 359 の Ninject.KernelBase.Resolve(IRequest request 1.GetValue(Type service, IContext parent) in c:\Projects\Ninject\ninject\src\Ninject\Planning\Targets\Target.cs:line 197 at Ninject.Planning.Targets.Target) c:\Projects の Ninject.Planning.Targets.Target 1.ResolveWithin(IContext 親) \Ninject\ninject\src\Ninject\Planning\Targets\Target.cs: c:\Projects\Ninject\ninject\src\Ninject\ の Ninject.Activation.Providers.StandardProvider.GetValue(IContext コンテキスト、ITarget ターゲット) の 165 行目Activation\Providers\StandardProvider.cs: c:\Projects\Ninject\ninject\src\Ninject\Activation\Providers\StandardProviderの Ninject.Activation.Providers.StandardProvider.<>c_ DisplayClass4.b _2 (ITarget ターゲット) の 114 行目 cs: System.Linq.Enumerable.WhereSelectArrayIterator 2.MoveNext() at System.Linq.Buffer1..ctor(IEnumerableの 96 行目1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable1 ソース) c:\Projects\Ninject\ninject\src\Ninject\Activation\Providers\StandardProvider.cs:line 96 at Ninject.Activation.Context.Resolve( ) in c:\Projects\Ninject\ninject\src\Ninject\Activation\Context.cs:line 157 at Ninject.KernelBase.<>c_ DisplayClass10.b _c(IBinding binding) in c:\Projects\Ninject\ninject\src \Ninject\KernelBase.cs: System.Linq.Enumerable.WhereSelectEnumerableIterator の 386 行目2.MoveNext() at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable1 ソース) システムの c:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectDependencyResolver.cs:line 56 の Ninject.Web.Mvc.NinjectDependencyResolver.GetService(Type serviceType)。 Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType)

4

1 に答える 1