如何在 ASP.Net Core MVC 中的应用程序启动之间保留变量值?

How to preserve variable value between application starts in ASP.Net Core MVC?

我有一个 ASP.NET 核心 MVC 应用程序,可能会不时重新启动(维护);如何使一些变量值从一次执行到下一次执行保持不变?

PS:就是需要把值写成持久化的代码。例如“LastMaintenanceRestartTime = 03/04-2020”,维护重启每天发生一次,因此代码需要记住上次重启的时间。

在 UWP 中,我可以执行以下代码,但我似乎找不到 ASP.NET 核心的等效代码:

Windows.Storage.ApplicationData.Current.LocalSettings.Values[key] = value;

我能找到的最好的是以下代码,但这些值仅在同一执行中持久存在:

AppDomain.CurrentDomain.SetData(key, value);

有人在谈论“Application.Settings”,但我似乎无法访问此命名空间...

我还看到一些人谈论可以在执行期间修改的“AppSettings”文件,但保持简单值持久化似乎相当复杂...

您对我有什么建议、解决方案或想法吗?

创建模型保存数据和上次执行时间

public class ApplicationData {
      public DateTime LastExecutionTime {get;set;}
      public string Data {get;set;}
      public bool isRunningFirstTime {get;set}
   }

1.On 第一个应用程序 运行,模型应更新为当前值并且 isRunningFirstTime 应设置为 false。 2. 在秒 运行 上,根据日期和应用程序读取或更新值 运行ning count

扩展@rashidali 的回答(并没有说最好,但是):

public class ApplicationData 
{
      private DateTime _lastExecutionTime;
      public DateTime LastExecutionTime 
      {
            get
            {
                  _lastExecutionTime = (read from file/database);
                  return _lastExecutionTime;
            }
            set
            {
                  _lastExecutionTime = value;
                  (write _lastExecutionTime to file/database);
            }
      }
      public string Data {get;set;}
      public bool isRunningFirstTime {get;set}
}

我找到了解决方案:

static void ReadSetting(string key)  
        {  
            try  
            {  
                var appSettings = ConfigurationManager.AppSettings;  
                string result = appSettings[key] ?? "Not Found";  
                Console.WriteLine(result);  
            }  
            catch (ConfigurationErrorsException)  
            {  
                Console.WriteLine("Error reading app settings");  
            }  
        }  

        static void AddUpdateAppSettings(string key, string value)  
        {  
            try  
            {  
                var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  
                var settings = configFile.AppSettings.Settings;  
                if (settings[key] == null)  
                {  
                    settings.Add(key, value);  
                }  
                else  
                {  
                    settings[key].Value = value;  
                }  
                configFile.Save(ConfigurationSaveMode.Modified);  
                ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);  
            }  
            catch (ConfigurationErrorsException)  
            {  
                Console.WriteLine("Error writing app settings");  
            }  
        }  

Link: https://docs.microsoft.com/en-us/dotnet/api/system.configuration.configurationmanager.appsettings?redirectedfrom=MSDN&view=dotnet-plat-ext-5.0#System_Configuration_ConfigurationManager_AppSettings