Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.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# 使用Web API 2加载Ninject组件ICache时出错_C#_Asp.net Web Api_Dependency Injection_Asp.net Web Api2_Ninject - Fatal编程技术网

C# 使用Web API 2加载Ninject组件ICache时出错

C# 使用Web API 2加载Ninject组件ICache时出错,c#,asp.net-web-api,dependency-injection,asp.net-web-api2,ninject,C#,Asp.net Web Api,Dependency Injection,Asp.net Web Api2,Ninject,我在执行web api控制器时收到以下错误 我收到这个错误: 加载Ninject组件ICache时出错\r\n未安装此类组件 在内核的组件容器中注册 我正在调用的控制器有几个接口供控制器使用 我的控制器构造函数: private ISDKConfiguration iSDKConfiguration; private ISDKLogin iSDKLogin; private ISDKLogout iSDKLogout; private ISDKRetrieveUserSession iSDKRe

我在执行web api控制器时收到以下错误

我收到这个错误:

加载Ninject组件ICache时出错\r\n未安装此类组件 在内核的组件容器中注册

我正在调用的控制器有几个接口供控制器使用

我的控制器构造函数:

private ISDKConfiguration iSDKConfiguration;
private ISDKLogin iSDKLogin;
private ISDKLogout iSDKLogout;
private ISDKRetrieveUserSession iSDKRetrieveUserSession;

public SDKAccountController(ISDKConfiguration sdkConfiguration, ISDKLogin sdkLogin, ISDKLogout sdkLogout, ISDKRetrieveUserSession sdkRetrieveUserSession)
{
    iSDKConfiguration = sdkConfiguration;
    iSDKLogin = sdkLogin;
    iSDKLogout = sdkLogout;
    iSDKRetrieveUserSession = sdkRetrieveUserSession;
}
我的HTTP Post方法

[HttpPost]
[Route("Login")]
public SDKUserDTO Login([FromBody]SDKUserDTO sdkUserDTO)
{
    iSDKConfiguration.Load();

    iSDKLogin.SDKUserDTO = sdkUserDTO;
    iSDKLogin.Process();

    iSDKRetrieveUserSession.SDKUserDTO = sdkUserDTO;
    sdkUserDTO = iSDKRetrieveUserSession.Process();

    return sdkUserDTO;
}
下载
Ninject.Web.Common.WebHost
nuget包时包含的NinjectWebCommon.cs

public static class NinjectWebCommon
{
    private static readonly Bootstrapper bootstrapper = new Bootstrapper();

    /// <summary>
    /// Starts the application 
    /// </summary>
    public static void Start()
    {
        DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
        DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
        bootstrapper.Initialize(CreateKernel);
    }

    /// <summary>
    /// Stops the application. 
    /// </summary>
    public static void Stop()
    {
        bootstrapper.ShutDown();
    }

    /// <summary>
    /// Creates the kernel that will manage your application. 
    /// </summary>
    /// <returns>
    /// The created kernel. 
    /// </returns>
    private static IKernel CreateKernel()
    {
        var kernel = new StandardKernel();
        try
        {
            kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
            kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

            RegisterServices(kernel);

            System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver = new Ninject.Web.WebApi.NinjectDependencyResolver(kernel);
            return kernel;
        }
        catch
        {
            kernel.Dispose();
            throw;
        }
    }

    /// <summary>
    /// Load your modules or register your services here! 
    /// </summary>
    /// <param name="kernel">
    /// The kernel. 
    /// </param>
    private static void RegisterServices(IKernel kernel)
    {
        kernel.Bind<ISDKConfiguration>().To<SDKConfiguration>();
        kernel.Bind<ISDKLogin>().To<SDKLogin>();
        kernel.Bind<ISDKLogout>().To<SDKLogout>();
        kernel.Bind<ISDKRetrieveUserSession>().To<SDKRetrieveUserSession>();
    }
}
我希望返回以下json

{
  "UserID": "dhu",
  "Password": "password",
  "Identifier": "LoginTestUsingPostman"
}

但是它抛出了上面的异常。

到底是什么抛出了错误?哪一行?在HTTP Post完成之前不会抛出错误。它应该返回一个JSON值,但返回以下消息。加载Ninject组件ICache时出错\r\n内核的组件容器中没有注册此类组件。这没有意义。返回的HTTP代码是什么?您可以逐行调试并逐步查看错误的来源吗?似乎这些SDK*类中的一个(或多个)依赖于ICache,并且您没有在容器中注册。
{
  "UserID": "dhu",
  "Password": "password",
  "Identifier": "LoginTestUsingPostman"
}