如何在使用“设置”时判断exe.config是否具有无效值
本文关键字:是否 config exe 无效 判断 设置 | 更新日期: 2023-09-27 18:22:18
所以我在当前正在使用的Windows服务上使用Settings.settings
,它可以很好地满足我的需求。到目前为止,我遇到的唯一问题是处理无效值的方式。据我所知,如果我编辑exe.config
文件并在其中一个属性中键入无效值,将使用设计时捕获的默认值。
如果你无论如何都想保持服务的运行,这一切都很好,但我需要一种方法来找到它,这样我就可以通知用户,防止他花几个小时试图弄清楚为什么即使没有报告错误,服务也没有按预期工作。
在使用设置时,是否有方法检查exe.config
文件中的所有属性都具有有效值?我一直找不到。
您可以使用SettingsLoaded
事件。打开Settings.cs
文件,并在构造函数中附加SettingsLoaded
。像这样:
// This class allows you to handle specific events on the settings class:
// The SettingChanging event is raised before a setting's value is changed.
// The PropertyChanged event is raised after a setting's value is changed.
// The SettingsLoaded event is raised after the setting values are loaded.
// The SettingsSaving event is raised before the setting values are saved.
internal sealed partial class Settings {
public Settings() {
this.SettingsLoaded += OnSettingsLoadedEvent;
}
private void OnSettingsLoadedEvent(object sender, SettingsLoadedEventArgs settingsLoadedEventArgs)
{
if (SomeNumParam >= 100)
{
const string msg = "SomeNumParam is invalid! Value must be between 0 and 100";
Console.WriteLine(msg);
throw new ArgumentOutOfRangeException(msg);
}
}
}
如果你无论如何都想保持服务的运行,这一切都很好,但我需要一种方法来找到它,这样我就可以通知用户,防止他花几个小时试图弄清楚为什么即使没有报告错误,服务也没有按预期工作。
这似乎与它应该做的恰恰相反。使用无效的配置信息运行程序是没有意义的。通常,Windows服务在加载期间或需要刷新设置时需要验证设置,如果不能,则应写入事件日志,然后停止。事件日志应该写入哪些参数不正确,通常由系统管理员在错误情况下监视事件日志。
另一种选择是使用日志记录系统(例如Log4net),该系统支持多种方式来处理日志记录(数据库、邮件等)。
如果您的问题是默认值,我建议您创建无效的默认值。