如何在.net Web应用程序中为不同的Web服务器创建通用web.config文件?

时间:2010-07-13 17:56:03

标签: asp.net web-config

我想为VB.NET中的不同Web服务器创建一个通用的web.config文件。因此,根据服务器配置要求,应用程序可以从该通用配置文件中检索所有值。

这可能吗?我该怎么做?

5 个答案:

答案 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中加载。然后,这可以替换适当环境的占位符。