WebConfigurationManager和ConfigurationManager之间有什么区别?
我应该何时使用另一个?
已更新
我只是查看了WebConfigurationManager,由于某种原因,您无法像在ConfigurationManager中那样访问连接字符串(如数组)。谁能告诉我为什么MS这样做了?使用WebConfigurationManager获取所需的连接字符串似乎很痛苦。
再次使用CAVEAT更新!
如果您没有引用添加到项目中的“System.Configuration”命名空间,那么当您尝试访问WebConfigurationManager.ConnectionStrings时,Visual Studio将显示错误!
答案 0 :(得分:92)
WebConfigurationManger知道如何在Web应用程序中处理配置继承。如您所知,在一个应用程序中可能有多个web.config文件 - 一个位于站点的根目录中,任何数字位于子目录中。您可以将路径传递给GetSection()方法以获得可能的覆盖配置。
如果我们使用Reflector在WebConfigurationManager上闲逛,那么事情很清楚:
public static object GetSection(string sectionName)
{
...
return ConfigurationManager.GetSection(sectionName);
}
public static object GetSection(string sectionName, string path)
{
...
return HttpConfigurationSystem.GetSection(sectionName, path);
}
答案 1 :(得分:25)
WebConfigurationManager专门用于ASP.NET应用程序。
WebConfigurationManager提供了其他方法来加载适用于Web应用程序的配置文件。
ConfigurationManager还提供了加载适用于“.exe”应用程序的配置文件的方法。
我建议你看一下WebConfigurationManager,看看它是否为你提供了一些你无法用ConfigurationManager做的事情而是使用它,否则使用ConfigurationManager会让你的代码在web和桌面之间无缝地使用变得容易得多APS。
答案 2 :(得分:4)
虽然WebConfigurationManager位于System.Web程序集中,但它返回的ConnectionStringSettingsCollection位于System.Configuration中。
如果您收到错误
尝试访问数组索引时无法将带有[]的索引应用于类型的表达式 ' System.Configuration.ConnectionStringSettingsCollection'
...
WebConfigurationManager.ConnectionStrings["Name"].ConnectionString
确保您有对程序集System.Configuration
的引用答案 3 :(得分:3)
不确定您对连接字符串的意思。
调用WebConfigurationManager.ConnectionStrings会返回System.Configuration.ConnectionStringSettingsCollection,这与您调用ConfigurationManager.ConnectionStrings时的相同。
否则,正如XOR所说,它旨在处理多个分层的web.configs,当你在应用程序中移动文件夹时,根据需要组合它们。