Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ninject未通过应用程序启动中的DependencyResolver进行解析_C#_Asp.net Web Api_Ninject - Fatal编程技术网

C# Ninject未通过应用程序启动中的DependencyResolver进行解析

C# Ninject未通过应用程序启动中的DependencyResolver进行解析,c#,asp.net-web-api,ninject,C#,Asp.net Web Api,Ninject,我整个上午都在试图解决这个问题,但似乎是时候征求意见了 我有一个MVC/WebApi/SignalR应用程序。我有一个服务,我想开始与网络应用程序一起。我希望这项服务被注入。这就是我想做的: public static class NinjectWebCommon { ... private static void RegisterServices(IKernel kernel) { GlobalHost.DependencyResolver = new

我整个上午都在试图解决这个问题,但似乎是时候征求意见了

我有一个MVC/WebApi/SignalR应用程序。我有一个服务,我想开始与网络应用程序一起。我希望这项服务被注入。这就是我想做的:

public static class NinjectWebCommon 
{
   ...

   private static void RegisterServices(IKernel kernel)
    {
        GlobalHost.DependencyResolver = new Microsoft.AspNet.SignalR.Ninject.NinjectDependencyResolver(kernel); 

        kernel.Bind<PricingService>().ToSelf().InSingletonScope();
    }
}

public class Application : HttpApplication
{
    protected void Application_Start()
    {
        ...
        PricingService pricingService = DependencyResolver.Current.GetService<PricingService>();
    }
}

非常感谢您的帮助。

多亏了史蒂夫的评论,我才得以解决这个问题

缺少的部分是在MVC基础结构中注册NinjectDependencyResolver:

private static void RegisterServices(IKernel kernel)
{
    DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
    ...
}
执行此操作后,
dependencysolver.Current
的实例更改为
ninjectdependencysolver


不幸的是,这还没有结束。在尝试调用
DependencyResolver.Current.GetService()
时,我遇到了一个
System.EntryPointNotFoundException
。但在的帮助下,这很容易解决。

请确保您的DependencyResolver.Current in Application_Start是NinjectDependencyResolver的一个实例。如果不是,请确保在应用程序启动过程中,您的配置在正确的位置/时间。Steve,感谢您的及时回答。DependencyResolver.Current不是NinjectDependencyResolver的实例。至于初始化,我自己不注册解析器。我正在使用一个Ninject.MVC3包,我的印象是这将自动完成(在某处)。我已经检查了NinjectWebCommon类的RegisterServices方法是否在应用程序启动之前被调用。我需要手动执行一些额外的初始化吗?
private static void RegisterServices(IKernel kernel)
{
    DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
    ...
}