区分machine.config和web.config中的ConnectionStrings

时间:2011-01-13 15:28:04

标签: c# asp.net connection-string

使用C#,是否有办法区分machine.config中的ConnectionStrings和web.config?我想迭代web.config中的集合,但不是来自machine.config的那些集合。

ASP.NET 3.5,C#

5 个答案:

答案 0 :(得分:2)

尝试下面的代码或发出linq查询以查找两个配置的赞美(差异)。如果索引0处的连接字符串来自机器配置,并且它还比较索引0处的连接字符串,则以下结果为true,否则产生错误:

System.Configuration.ConfigurationManager.ConnectionStrings[0].Equals
(System.Configuration.ConfigurationManager.OpenMachineConfiguration()
.ConnectionStrings.ConnectionStrings[0])

答案 1 :(得分:1)

你试过吗

Configuration c = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/");

答案 2 :(得分:1)

从MSDN,还可以查看System.Web.Configuration命名空间。

How to: Read Connection strings from the Web.config file

System.Configuration.Configuration rootWebConfig =
            System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/MyWebSiteRoot");
        System.Configuration.ConnectionStringSettings connString;
        if (rootWebConfig.ConnectionStrings.ConnectionStrings.Count > 0)
        {
            connString =
                rootWebConfig.ConnectionStrings.ConnectionStrings["NorthwindConnectionString"];
            if (connString != null)
                Console.WriteLine("Northwind connection string = \"{0}\"",
                    connString.ConnectionString);
            else
                Console.WriteLine("No Northwind connection string");
        }

答案 3 :(得分:0)

Web.Config中的每个配置也可以放在machine.config中。 您可以想到Machine.Config是基类,Web.Config是子类。

因此,如果您覆盖Web.Config中的任何设置,您基本上会覆盖计算机配置设置(或要求应用程序使用web.config设置)

所以我想如果你在Web.Config中编写连接,那么当你遍历连接字符串时,从你的应用程序中编写

ConfigurationManager.ConnectionStrings

您将只能访问您在web.config中编写的连接字符串。

请尝试使用web.config connectionstring部分中的<clear/>。所以我认为这将清除Machine.config连接字符串。

答案 4 :(得分:0)

要获取本地web.config中的第一个连接字符串,请使用它:

 var ms = System.Configuration.ConfigurationManager.OpenMachineConfiguration();
 if (ConfigurationManager.ConnectionStrings.Count > ms.ConnectionStrings.ConnectionStrings.Count)
            return ConfigurationManager.ConnectionStrings[ms.ConnectionStrings.ConnectionStrings.Count].ConnectionString;