我一直在研究这个问题。但我没有遇到任何令人满意的解决方案。
场景是我有一个WPF客户端应用程序。我在项目中添加了几个Web引用,并且我对Settings.Designer.cs文件进行了修改,并对srever url和port进行了硬编码引用。这开始反映在ApplicationSettings部分的app.config文件中。
在用户登录之前,他可以为服务器指定ServerIP和端口的设置。现在我想在app.config中保存这些设置,并从那里获取服务器IP和端口的值,或将其保存在其他位置,并通过此IP和端口连接到服务器。我希望这些改变能够持续下去。
我能想到的一个解决方案是通过XML阅读器读取app.config,修改文件,保存并以某种方式重新启动应用程序。
我无法想到更好的场景,因为我认为无法从应用程序内部修改ApplicationSettings部分。
编辑:
我的applicationSettiings部分看起来像这样:
<applicationSettings>
<ApplicationName.Properties.Settings>
<setting name="Web_Service_Reference_Name1" serializeAs="String">
<value>http://10.1.100.118:8080/AD/WebService1</value>
</setting>
<setting name="Web_Service_Reference_Name2" serializeAs="String">
<value>http://10.1.100.118:8080/AD/WebService2</value>
</setting>
</ApplicationName.Properties.Settings>
</applicationSettings>
答案 0 :(得分:1)
有时候在这个网站上发布了类似的问题 我有一个简单的解决方案,如下所示:
public void WriteLocalValue(string localKey, string curValue)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
KeyValueConfigurationElement k = config.AppSettings.Settings[localKey];
if (k == null)
config.AppSettings.Settings.Add(localKey, curValue);
else
k.Value = curValue;
config.Save();
}
public string ReadLocalValue(string localKey, string defValue)
{
string v = defValue;
try
{
Configuration config = ConfigurationManager.OpenExeConfiguration( Application.ExecutablePath);
KeyValueConfigurationElement k = config.AppSettings.Settings[localKey];
if (k != null) v = (k.Value == null ? defValue : k.Value);
return v;
}
catch { return defValue; }
}