簡體   English   中英

如何在C#中更新app.config

[英]How to update app.config in c#

我的項目是使用MVVM在WPF中開發的。 在viewModel中使用WCF服務。 在View中,存在app.config文件,其中包含有關WCF配置的信息,例如端點信息...。 我們有兩個服務,例如service1和service2都具有相同的功能,但服務地址將不同。 Service1正在與數據庫1通信,而service2正在與數據庫2通信,因此對DB的服務是一對一的映射。 在視圖中,有一個ComboBox,它將顯示兩個選項,例如DB1和DB2。 基於comboBox的選擇,我必須根據WPF-MVVM模式更新我的app.config文件[端點地址]。 因為應用程序應該使用新服務重新初始化-DB函數調用。 因此,如果更改了ComboBox選擇,那么將在ViewModel中編寫命令(命令)的調用位置。 那么如何更新配置文件?

還有其他方法可以實現這一目標嗎?

配置必須在您的啟動項目中,這可能是問題所在

您有兩個相同的WCF服務,並且希望用戶使用ComboBox選擇與您的應用程序進行交互的對象。 因此,您的應用程序只需要在配置文件中為代理定義一個定義。 指向兩個URL中的哪個都無所謂。

您可以在運行時在代理的構造函數中以編程方式設置端點的URL。 我不能從問題中分辨出您使用的是哪種協議,但是這里有一些示例

您需要保留一個可能的URL值列表,以允許用戶做出選擇(但這與選擇的URL值不同,我將在后面進行介紹)。 我建議在文件的這一部分中,在配置中使用備用URL(我將猜測http協議,以便您可以理解我的意思)...

<configuration>
    ...
    <appSettings>
         <add key="Endpoint1" value="http://whatever"/>
         <add key="Endpoint2" value="http://whatever"/>
    </appSettings>
    ...
</configuration>

然后在啟動時,遍歷這些內容,將它們放入您的ComboBox中:

var appSettings = ConfigurationManager.AppSettings;
foreach (var key in appSettings.AllKeys.Where(x=>x.StartsWith("Endpoint"))
{
    // put appSettings[key] into the combobox (in a list in your viewmodel if you use MVVM)
}

然后,您需要存儲該用戶選擇了其中之一(並記住在啟動時預先選擇該值)。 我建議使用“用戶設置”,該設置(與“ App.config”文件不同)允許更改值。 有關如何操作,請參見C#中的用戶設置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM