在代码中修改根目录Web.config

问题描述:

我想存储有关给定站点实例的一些元信息,这些信息可以(a)由该站点实例管理,并(b)持续打破Web.config文件的破坏。 该网站将运行在多个环境(开发,测试,分期和生产),每个环境可以有不同的元数据值。 注意:所有环境都运行IIS 7.0+在代码中修改根目录Web.config

根Web.config似乎非常有吸引力,因为它肯定在网站之外。因此,可以在维护元数据的同时更改文件和数据库。我已经看到如何修改存储在网站中的Web.config的appSettings,但是是否可以类似地修改Root Web.config中的appSettings(特别是在正确的指令中)?

如果您有其他建议来解决这个问题,我会很高兴听到他们。谢谢!

,如果我的假设是不正确的,在web.config不会是不会使用的web.config运行时修改,这将导致应用程序循环,甚至类似的app.config

配置文件的一些其他形式在应用程序启动后编辑,然后您可以使用WebConfigurationManager访问文件部分

+0

谢谢你的答案。还有一件小事让我继续搜索,那就是应该使用null作为虚拟路径参数来引用根web.config。 WebConfigurationManager.OpenWebConfiguration(空) – 2011-01-30 21:30:10

是的,你可以模块化你的web.config中的应用程序设置只需使用System.Web.Configuration命名空间中的WebConfigurationManager类来创建一个配置对象。然后可以使用该对象读取和写入对web.config文件的更改。

然后,您可以创建自己的“密钥”或属性,以便根据需要进行读取。

根据你的属性代表什么,或者如果他们需要从该服务器的多个环境中挑选出来,我还会考虑在machine.config文件中进行修改,然后这些设置将应用于输入机器,由多个环境提取(如果您正在从服务器托管多个webapps)。这可以节省您修改多个web.config文件的时间,并在某些情况下将存储或元数据缩减到一个位置与多个配置文件。