C# asp.net Web应用程序处理全局变量
如何在部署在IIS中的asp.net web API项目中定义和初始化全局变量 这是我的两个箱子 我需要有这样一个全局变量,它可以在所有代码中访问,从WebAPI到我在WebAPI中创建的实例 我的全局变量如下所示C# asp.net Web应用程序处理全局变量,c#,asp.net,asp.net-web-api,global-variables,static-variables,C#,Asp.net,Asp.net Web Api,Global Variables,Static Variables,如何在部署在IIS中的asp.net web API项目中定义和初始化全局变量 这是我的两个箱子 我需要有这样一个全局变量,它可以在所有代码中访问,从WebAPI到我在WebAPI中创建的实例 我的全局变量如下所示 DataTable属性=GetPropertyValuesFromDb() 在重新启动IIS或重新发布项目之前,此属性不会更改 我不想每次都从数据库加载值 需要立即设置,所有子项目都可以访问它。为此,有一个名为appsettings.json的文件。可以定义变量 然后通过配置变量访问
DataTable属性=GetPropertyValuesFromDb()
在重新启动IIS或重新发布项目之前,此属性不会更改
我不想每次都从数据库加载值
需要立即设置,所有子项目都可以访问它。为此,有一个名为appsettings.json的文件。可以定义变量 然后通过配置变量访问它们,如
Configuration.getSection('SectionName')
或
Configuration.getSection('SectionName:SubSectionName')
可以在Startup类中访问确认,也可以将其注入到DI容器中使用的控制器或服务中。只需将IConfiguration类型的参数从DI容器添加到控制器或服务的构造函数中
但不建议使用appsettings.json在生产环境中存储连接字符串等秘密变量。这些变量应该存储在生产环境中,也可以像上面提到的那样访问它们。您可以让API从存储此变量的基础API继承 示例代码 基本API
[Route("api/[controller]")]
[ApiController]
public class BaseController : ControllerBase
{
public static DataTable _property;
public BaseController()
{
_property = GetPropertyValuesFromDb()
}
}
从基本API继承的主API
[Route("api/[controller]")]
[ApiController]
public class SomeController : BaseController
{
public SomeController():base()
{
}
[HttpPost]
[Route("SomePath")]
public string SomeMethod()
{
/*Access datatable here*/
_property
}
}
您可以在包含静态类的解决方案中创建新项目。它作为一个常数存在。最后你添加了对主项目的引用静态构造函数是我想要的答案,但是这个答案帮助我解决了另一个问题,Thanksstatic类和静态构造函数会解决这个问题,只是静态类不能帮助我从数据库加载数据,如果我这样做,它会被多次调用,第一次从数据库加载数据,我不知道这会有什么帮助