I’d like to set a connection string programmatically, with absolutely no change to any config files / registry keys.
I have this piece of code, but unfortunately it throws an exception with ‘the configuration is read only’.
ConfigurationManager.ConnectionStrings.Clear(); string connectionString = 'Server=myserver;Port=8080;Database=my_db;...'; ConnectionStringSettings connectionStringSettings = new ConnectionStringSettings('MyConnectionStringKey', connectionString); ConfigurationManager.ConnectionStrings.Add(connectionStringSettings);
Edit: The problem is that I have existing code that reads the connection string from the configuration. So setting the config string manually, or through a resource, don’t seem like valid options. What I really need is a way to modify the configuration programmatically.
I’ve written about this in a post on my blog. The trick is to use reflection to poke values in as a way to get access to the non-public fields (and methods).
eg.