C# 如何在Web API中的多个控制器之间共享长寿命资源?

C# 如何在Web API中的多个控制器之间共享长寿命资源?,c#,dependency-injection,asp.net-web-api,C#,Dependency Injection,Asp.net Web Api,我有一个WebAPI控制器类(继承自ApiController) 它需要读取磁盘上存在的数据。我不想为每个请求都从磁盘加载 所以我想找到一些方法将依赖注入控制器 我应该创建一个实现IDependencyResolver的自定义依赖项解析器吗 对于依赖类,我需要采取哪些线程安全措施 您可以使用将依赖项注入到所需的任何控制器 要使用WebAPI的依赖注入,您需要ninject的另一个nuget包,名为“WebApiContrib.IoC.ninject” Ninject在应用程序开始文件夹中创建一个

我有一个WebAPI控制器类(继承自ApiController)

它需要读取磁盘上存在的数据。我不想为每个请求都从磁盘加载

所以我想找到一些方法将依赖注入控制器

我应该创建一个实现IDependencyResolver的自定义依赖项解析器吗

对于依赖类,我需要采取哪些线程安全措施

您可以使用将依赖项注入到所需的任何控制器

要使用WebAPI的依赖注入,您需要ninject的另一个nuget包,名为“WebApiContrib.IoC.ninject”

Ninject在应用程序开始文件夹中创建一个名为“NinjectWebCommon.cs”的文件,您可以在其中配置依赖项

private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<ILogLivedResource>().To<LongLiveResourceInstance>().InRequestScope();;
}
私有静态无效注册服务(IKernel内核)
{
kernel.Bind().To().InRequestScope();;
}
您可以找到更多信息

问候,,
Mishu

基本控制器中的静态属性可以。如果你只是在读书。。没有线程问题需要担心。如果依赖项在每次请求时被实例化,那么仅注入依赖项并不能解决问题。Simon,“基本控制器”是什么意思?一个具有公共静态属性的新类,其中包含我的控制器可以从中继承的依赖项?