0

我有一个可能会不时重启的 ASP.NET Core MVC 应用程序(维护);如何使某些变量值从执行到下一个持久化?

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

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

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

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

AppDomain.CurrentDomain.SetData(key, value);

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

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

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

4

3 回答 3

0

我找到了解决方案:

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");  
            }  
        }  

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

于 2020-11-27T16:14:01.973 回答
-1

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

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

1.在第一次应用程序运行时,模型应更新为当前值并isRunningFirstTime应设置为 false。2. 在第二次运行时,根据日期和应用程序运行次数读取或更新值

于 2020-11-27T13:42:04.330 回答
-1

扩展@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}
}
于 2020-11-27T16:11:29.743 回答