如何在 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");
}
}
我有一个 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");
}
}