使用C#,是否有办法区分machine.config中的ConnectionStrings和web.config?我想迭代web.config中的集合,但不是来自machine.config的那些集合。
ASP.NET 3.5,C#
答案 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;