1

Ninject、Ninject.Web.Common、Ninject.Web.Mvc(3) を含む Nuget を介して Ninject をインストールしました。現在、NinjectWebCommon の RegisterServices に登録されているサービスを使用しようとしても機能せず、上記のエラーが発生するという問題があります。これは以前は機能していたので、どこかで全体を台無しにする何かをしたに違いありません。何か助けはありますか?

私のコードは以下です。

名前空間 NinjectTestProject.Controllers {

public interface ITest
{
    string Test();
}

public class Tester : ITest
{
    public string Test()
    {
        return "testing";
    }
}


public class HomeController : Controller
{
    private readonly ITest _test;

    public HomeController(ITest test)
    {
        _test = test;
    }

    public ActionResult Test()
    {
        return Content(_test.Test());
    }

}

}

サービス登録 NinjectWebCommon

……

    /// <returns>The created kernel.</returns>
    private static IKernel CreateKernel()
    {
        var kernel = new StandardKernel();
        kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
        kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

        RegisterServices(kernel);
        return kernel;
    }

    /// <summary>
    /// Load your modules or register your services here!
    /// </summary>
    /// <param name="kernel">The kernel.</param>
    private static void RegisterServices(IKernel kernel)
    {
        kernel.Bind<ITest>().To<Tester>();
    }        
4

3 に答える 3

0

ああ、たった今道を見つけた。MVC3のNinjectを再インストールしただけで、問題が修正されました。

于 2013-03-05T10:28:46.060 に答える
0

http://silesiaresearch.com/blog/BlogCSharp#Blog_20131204で説明されているソリューションに従うことができます。基本的にはCreateKernel()、メソッドを customDependencyResolverで拡張する必要があります。つまり、RegisteredServices()メソッドが機能するはずです。

それは私のウェブサイトでうまくいきました。ただし、同じ症状の別の理由を共有しました。バインディングは正常に機能していましたが、MVC フレームワークは、コントローラーにデフォルト コンストラクターがないことを訴えていました。インストールされたNUGETコンポーネントが呼び出されなかったことが判明しましたNinject.Mvc3

于 2014-02-03T14:27:09.353 に答える