2016-12-03 73 views
1

我想在運行時設置connectionstring。我需要在運行時設置datasource並重新啓動應用程序。我發現在谷歌的一些做法,但問題是app.config背到默認值後Application.Restart();
如何操作app.config文件中的connectionstring?

我試圖挽救connectionstringsettings.csapp.config既但它不爲我工作。 這是我的代碼:

public void setConnectionString() 
    { 
     try 
     { 
      string str = string.Empty; 

      str = string.Format(@"Data Source={0}; Initial Catalog=CRM01_DB; UID= {1}; PWD={2}", Default.DataSource, Default.UID, Default.UPass); 

      this["CRM01_DBConnectionString"] = str; 
      Default.Save(); 
      Thread.Sleep(100); 
      var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
      var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings"); 
      connectionStringsSection.ConnectionStrings["CRM01_DBConnectionString"].ConnectionString = str; 
      config.Save(); 
      ConfigurationManager.RefreshSection("connectionStrings"); 

      Thread.Sleep(100); 

     } 
     catch (System.Exception ex) 
     { 
      System.Windows.Forms.MessageBox.Show(ex.Message); 
     } 

我沒有得到任何錯誤,但應用程序啓動時的connectionstrig有默認值

回答

0

如果你從VS可能無法正常工作測試此代碼(也可能不會)。

從VS運行時,實際執行的程序是<your_program>.vshost.exe,相應的.config文件被命名爲<your_program>.vshost.exe.config,您應該檢查您的更改。

但是...

VS保持原有.config.vshost.exe.config同步,這樣你就不會看到你的變化。

要測試代碼的作品,從外面VS嘗試或取消Enabled the Visual Studio hosting processProperties - >Debug)(請記住,它具有implications

enter image description here

+0

謝謝你,但它不工作。 –

+0

@mohammadboluki我確實嘗試過。奇蹟般有效 –

相關問題