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我确实尝试过。奇迹般有效 –