如何在Web上下文中替换OpenExeConfiguration(asp.net mvc 1)

前端之家收集整理的这篇文章主要介绍了如何在Web上下文中替换OpenExeConfiguration(asp.net mvc 1)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,所以我们有一些目前正在使用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中右键单击并以管理员身份运行:)

猜你在找的HTML相关文章