我想为VB.NET中的不同Web服务器创建一个通用的web.config文件。因此,根据服务器配置要求,应用程序可以从该通用配置文件中检索所有值。
这可能吗?我该怎么做?
答案 0 :(得分:2)
这只是一个随机的想法,但它可能不适合您的需求。您可以为服务器名称指定的每个服务器创建配置节。创建一个帮助程序类,用于读取配置值,该配置值首先检查以服务器名称命名的部分中的任何值,如果它不存在,则从默认配置部分读取它。
我仍然不确定这是否是一个明智的决定,只是一个选择。
答案 1 :(得分:2)
从技术上讲,machine.config包含适用于整台机器的设置。
web.config文件可以覆盖它的一些设置。
答案 2 :(得分:1)
对于保持不变的所有内容,请使用单个web.config。
对于所有更改的内容,请使用对外部文件的引用。
<configuration>
<appSettings file="ExternalWeb.config">
<add key="MyKey" value="MyValue" />
</appSettings>
...
</configuration>
http://www.devx.com/vb2themax/Tip/18880
这样,当主web.config中的内容发生变化时,很少有东西必须更新。
您还可以考虑使用模板和代码生成技术为每个服务器生成web.config。
答案 3 :(得分:1)
“模式”appsetting键/值怎么样?此“模式”可以设置为“dev”,“testing”,“prod”等。然后,设置当前配置文件的模式,并为将随模式更改的所有设置添加前缀。
示例:
<add key="mode" value="test" /> <!-- possible values: dev, test, prod -->
<add key="dev.dbconnstr" value="data source=DB;userid=ABC;password=DEF" />
<add key="test.dbconnstr" value="data source=DB;userid=ABC;password=DEF" />
<add key="prod.dbconnstr" value="data source=DB;userid=###;password=###" />
然后,根据模式使用配置类读取设置。
示例:
mode = ConfigurationManager.AppSettings("mode");
CongifurationManager.AppSettings(mode + ".dbconnstr");
这样做,您可以将相同的配置文件部署到所有服务器,并且不必担心调整每个服务器(当然除了在部署时更新“模式”值)。我还建议不要将生产凭据保存在其他配置文件中,而是将其替换为占位符。
答案 4 :(得分:0)
您可以在nant之类的内容中创建部署脚本,该脚本在包含配置选项占位符的web.config中加载。然后,这可以替换适当环境的占位符。