我正在尝试从app.config中读取连接字符串,但它只显示了一个连接字符串,而且我的app.config中也没有。
这是我的代码:
System.Diagnostics.Debugger.Break();
Configuration config =
ConfigurationManager.OpenExeConfiguration(
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
foreach (var connectionString in config.ConnectionStrings.ConnectionStrings)
System.Diagnostics.Debug.Print(connectionString.ToString());
它打印出来:
data source=.\SQLEXPRESS;Integrated Security=SSPI;
AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
当我希望它将自定义connectionString打印到我在app.config文件中指定的某个数据库时。
更新
大家好,谢谢大家花时间解决我的问题并试图帮忙。虽然你们都是对的,但我可以简单地使用ConfigurationManager.ConnectionStrings
或以这种方式访问任何其他子部分,我相信当我这样做时,配置是只读的。我无法对其进行任何更改,例如添加新的连接字符串或删除现有的连接字符串。我需要这样做。如果有办法在运行时修改配置文件,请告诉我。
答案 0 :(得分:2)
它从你的machine.config中读取。
在app.config中<connectionStrings>
之后插入<clear/>.
答案 1 :(得分:2)
您是否有理由使用OpenExeConfiguration
打开配置文件?如果它是您作为项目的一部分创建的app.config,您只需使用ConfigurationManager.ConnectionStrings
。
答案 2 :(得分:2)
ConfigurationManager.ConnectionStrings["ConnectionStringName"]
应该这样做,除非它存储为appSetting。
在这种情况下,它会在ConfigurationManager.AppSettings["SettingName"]
答案 3 :(得分:1)
如果要编辑ConnectionStrings(或app.config中的任何部分),则需要使用Configuration对象的GetSection()方法返回的对象。
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConnectionStringsSection csSettings = config.GetSection("connectionStrings") as ConnectionStringsSection;
if(csSettings != null)
{
// examples of removing all settings, adding a new one and removing it
csSettings.ConnectionStrings.Clear();
csSettings.ConnectionStrings.Add(new ConnectionStringSettings("myCS", "<connectionString>"));
csSettings.ConnectionStrings.Remove("myCS");
// save the changes
config.Save(ConfigurationSaveMode.Modified);
}
根据我的经验,OpenExeConfiguration(字符串)中存在一个错误,这意味着它始终会打开您的app.config。要从文件名中打开配置文件,您需要使用OpenMappedExeConfiguration()。
答案 4 :(得分:0)
你能读出任何配置设置(连接字符串除外)吗?
尝试:
System.Configuration.ConfigurationManager.AppSettings("MyAppVariable");
此外,该语法看起来有点复杂。试试这个更简单的版本:
System.Configuration.ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString
答案 5 :(得分:0)
我遇到了与我编写的小型控制台应用程序完全相同的问题(包含在更大的Web应用程序解决方案中) - 似乎我的app.config根本不再被拾取,而且我得到的唯一连接字符串回来的是LocalSqlServer。
重新启动修复它。