尝试这个:
在您的 ConfigurationManager 语句所在的位置放置一个断点,然后在“立即输出”窗口中运行以下命令
((ConfigurationSection) ConfigurationManager.GetSection("connectionStrings")).ElementInformation
。我的机器报告Source: "C:\Users\John\Documents\Visual Studio 2008\Projects\StackOverflowCode\WebApplication1\web.config"如下所示。
注意:以下还显示我正在访问 ASP.NET web.config。
{System.Configuration.ElementInformation}
Errors: {System.Configuration.ConfigurationException[0]}
IsCollection: true
IsLocked: false
IsPresent: true
LineNumber: 17
Properties: {System.Configuration.PropertyInformationCollection}
Source: "C:\\Users\\John\\Documents\\Visual Studio 2008\\Projects\\StackOverflowCode\\WebApplication1\\web.config"
Type: {Name = "ConnectionStringsSection" FullName = "System.Configuration.ConnectionStringsSection"}
Validator: {System.Configuration.DefaultValidator}
当我运行时,ConfigurationManager.ConnectionStrings.ElementInformation
我得到Source :null这对于我的网络应用程序是正确的。
你得到什么配置源路径???
立即假设
ConfigurationManager.ConnectionStrings["connectionString"];
可能会查找不一定与 Web 应用程序的根 web.config 相同的配置位置。可能它正在查看 Windows 目录(例如,在不同的位置或 machine.config)。试图为此找到合适的测试。
每位经理的意图
系统配置。ConfigurationManager可以访问 .NET 配置 XML 格式,这意味着它同时读取:
- Web 配置(即 ASP.NET 中的 web.config 文件)
- 和非 Web 配置(例如 app.config 文件 - 独立控制台应用程序、Windows 应用程序等)
并表示配置类型共有的那些方面。这是一个通用的配置管理器。(但是,尽管可以查看这两种类型的配置,但您应该将其用于应用程序配置,因为 Web 管理器专门用于 Web 配置,如下所述......)
系统.Web.配置。WebConfigurationManager做的事情几乎相同,但它是配置管理器的“网络化”版本,提供对 ASP.NET Web 特定配置方面的访问(例如 ASP.NET 中的 web.config 文件)。
相似之处
查看ConfigurationManager.*和WebConfigurationManager.*之间的成员相似性
例如,两个管理员都可以访问一个AppSettings
属性和一个ConnectionStrings
属性。实际上,这两种设置对两种配置都是通用的,甚至位于 XML 文档中的同一级别。
所以有很多相似之处,
行为差异
访问配置:ConfigurationManager 具有打开相对于 EXEC 应用程序的独立应用程序配置(即 Myprogram.EXE 的 App.config)的方法,而 WebConfigurationManager 具有打开相对于它在网站中的 Web 应用程序根目录的 ASP.NET Web 配置的方法。
这是一个基本的app.config (例如,通过ConfigurationManager从磁盘文件夹中的“C:\winapp\app.config”打开)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings/>
<connectionStrings/>
</configuration>
这是一个基本的web.config (例如,通过“~”打开,意思是WebConfigurationManager的网站根目录)
<?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<!-- special web settings -->
</system.web>
</configuration>
注意相似之处。另请注意,Web 配置有一个针对 ASP.NET 的附加system.web
元素。
这些管理器位于不同的程序集中。
- 配置管理器:System.Configuration.dll
- WebConfigurationManager:System.Web.dll