好的,所以我们有一些目前正在使用OpenExeConfiguration读取配置文件的东西,但是这在web上下文中运行时不起作用。
我已经尝试了以编程方式打开web.config的各种不同的方法,但我似乎无法让它读取正确的web.config文件。如果重要的是我正在VS 2008中进行调试。
1. config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(System.Web.HttpContext.Current.Request.ApplicationPath); 2. config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = "web.config" },ConfigurationUserLevel.None); 3. config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); 4. config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null); 5. System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath);
它打开错误的配置文件(机器配置或VS /IDE/Web.config)或抱怨错误:
{System.Configuration.ConfigurationErrorsException:加载配置文件时出错:无法映射路径“/”。 —> System.InvalidOperationException:映射路径“/”失败。
编辑 –
好的结合了
config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
并运行Visual Studio 2008 As Administrator工作。我希望我们在部署到我们的Web服务器/客户端环境时不会遇到安全/许可问题!
解决方法
所以最后我用这个代码(不得不处理Web应用程序是运行的,还是我们的单元测试代码正在运行)。
System.Configuration.Configuration config = null; if (System.Web.HttpContext.Current != null && !System.Web.HttpContext.Current.Request.PhysicalPath.Equals(string.Empty)) config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); else config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
还必须以管理员模式运行Visual Studio – 我发现您可以将其设置为快捷方式上的属性,因此您不需要记住每次在Windows 7中右键单击并以管理员身份运行:)