WebConfigurationManager和ConfigurationManager有什么区别?

WebConfigurationManager和ConfigurationManager有什么区别?

我应该什么时候使用一个?

更新

我只是看着WebConfigurationManager,出于某种原因,你不能像在ConfigurationManager中那样访问连接string(就像数组一样)。 谁能告诉我为什么MS做到这一点? 使用WebConfigurationManager获取所需的连接string似乎很痛苦。

与CAVEAT再次更新!

如果您没有对添加到项目中的“System.Configuration”命名空间的引用,那么当您尝试像访问数组一样访问WebConfigurationManager.ConnectionStrings时,Visual Studio将显示错误!

WebConfiguratonManger知道如何处理Web应用程序中的configurationinheritance。 如您所知,一个应用程序中可能有多个web.config文件 – 一个位于站点的根目录中,另一个位于子目录中。 您可以将path传递给GetSection()方法以获取可能的重写configuration。

如果我们在WebConfigurationManager上使用reflection器,那么事情就很清楚了:

public static object GetSection(string sectionName) { ... return ConfigurationManager.GetSection(sectionName); } public static object GetSection(string sectionName, string path) { ... return HttpConfigurationSystem.GetSection(sectionName, path); } 

WebConfigurationManager是专门为ASP.NET应用程序制作的。

WebConfigurationManager提供了用于加载适用于Web应用程序的configuration文件的其他方法。

ConfigurationManager还提供了加载适用于“.exe”应用程序的configuration文件的方法。

我build议看一下WebConfigurationManager,看看它是否提供了你无法用ConfigurationManager做的任何事情,然后使用它,否则使用ConfigurationManager将使你的代码在Web和桌面API之间无缝地使用变得容易得多。

尽pipeWebConfigurationManager位于System.Web程序集中,但它返回的ConnectionStringSettingsCollection位于System.Configuration中。

如果你得到错误

不能用[]将索引应用于types为“System.Configuration.ConnectionStringSettingsCollection”的expression式

而试图访问数组索引…

 WebConfigurationManager.ConnectionStrings["Name"].ConnectionString 

确保你有一个参考大会System.Configuration

不知道你的意思是关于连接string。

调用WebConfigurationManager.ConnectionStrings会返回一个System.Configuration.ConnectionStringSettingsCollection,与您调用ConfigurationManager.ConnectionStrings时所得到的一样。

否则,正如XOR所说,它被devise为处理多个层次结构的web.configs,在应用程序中移动文件夹时根据需要进行组合。