C# 使用Web API 2加载Ninject组件ICache时出错
我在执行web api控制器时收到以下错误 我收到这个错误: 加载Ninject组件ICache时出错\r\n未安装此类组件 在内核的组件容器中注册 我正在调用的控制器有几个接口供控制器使用 我的控制器构造函数: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
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"
}