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,在应用程序中移动文件夹时根据需要进行组合。