Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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# asp.net Web应用程序处理全局变量_C#_Asp.net_Asp.net Web Api_Global Variables_Static Variables - Fatal编程技术网

C# asp.net Web应用程序处理全局变量

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的文件。可以定义变量 然后通过配置变量访问

如何在部署在IIS中的asp.net web API项目中定义和初始化全局变量 这是我的两个箱子

我需要有这样一个全局变量,它可以在所有代码中访问,从WebAPI到我在WebAPI中创建的实例

我的全局变量如下所示

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类和静态构造函数会解决这个问题,只是静态类不能帮助我从数据库加载数据,如果我这样做,它会被多次调用,第一次从数据库加载数据,我不知道这会有什么帮助