1

我已经通过 Nuget 安装了 Ninject,其中包括 Ninject、Ninject.Web.Common、Ninject.Web.Mvc(3)。我现在遇到一个问题,即尝试使用在 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

您可以尝试遵循http://silesiaresearch.com/blog/BlogCSharp#Blog_20131204中描述的解决方案基本上您需要CreateKernel()使用自定义扩展方法DependencyResolver,这意味着您的RegisteredServices()方法应该可以工作。

它确实在我的网站上工作。但是,对于相同的症状,我有不同的原因。我的绑定工作正常,但 MVC 框架抱怨我的控制器中缺少默认构造函数。事实证明,我错过了安装的 NUGET 组件,称为Ninject.Mvc3

于 2014-02-03T14:27:09.353 回答
0

啊,我才在这一分钟找到路。我简单地为 MVC3 重新安装了 Ninject,它以某种方式解决了这个问题。

于 2013-03-05T10:28:46.060 回答
0

我没有装配属性:

[assembly: PreApplicationStartMethod(typeof(NinjectWebCommon), "Start")]
[assembly: ApplicationShutdownMethod(typeof(NinjectWebCommon), "Stop")]
于 2014-12-15T10:23:25.417 回答