发现一个问题,我的app.Config文件中不配置connectionStrings节点时:ConfigurationManager.ConnectionStrings[0]的值不等于null
而且
ConnectionString=
"data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true";而
new ConnectionStringSettings().CurrentConfiguration.ConnectionStrings.ConnectionStrings[0]的值等于null
(这是在预料之中的,CurrentConfiguration获取当前程序配置文件,因为app.config根本没有connectionStrings节点)至于使用ConfigurationManager获取连接字符串时,为什么我没有配置任何节点却又返回值?但通过以上两种方式的对比可知ConfigurationManager获取的应该不止是CurrentConfiguration,我又考虑是不是因为ConfigurationManager.OpenExeConfiguration有三种打开配置文件的方式,
于是我用这三种方式取得连接字符串
  string strDefaultConn1 = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).ConnectionStrings.ConnectionStrings[0].ConnectionString;
                string strDefaultConn2 = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming).ConnectionStrings.ConnectionStrings[0].ConnectionString;
                string strDefaultConn3 = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).ConnectionStrings.ConnectionStrings[0].ConnectionString;
结果全都一样:
"data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true";why??在MSDN上看了ConfigurationManager类的介绍,但是没提及这一点,求高人指点!!!