多个ASP.NET配置文件

时间:2010-01-14 16:57:14

标签: asp.net deployment web-config

我找到了许多有关为Web部署提供多个ASP.NET配置文件的信息。但是,我仍然不确定我能否完成我想要完成的任务。

基本上,我正在处理的网站可以部署到三个不同的网站。根据部署到的站点,需要更改配置设置。我想要做的是为每个可能的配置(完整的web.config文件)配置文件,然后能够告诉部署构建哪个配置文件用于特定部署(如果需要,我可以手动编辑)。 / p>

是否存在指向不同.config文件这样简单的事情,或者我是否需要做更复杂的事情?

编辑:我有一个特别关注的问题是我还需要在system.net中设置邮件设置等等。所以,我不是只想 覆盖appSettings。

由于

3 个答案:

答案 0 :(得分:4)

任何配置部分(例如<smtp>)都可以“外部化”,例如存储在外部文件中。

除了file=上的<appSettings>声明(仅适用于应用设置:-()时,它不是“额外”设置 - 您只需将配置系统指向外部文件。< / p>

所以你可以在你的app.config / web.config中找到它:

  <system.net>
    <mailSettings>
      <smtp configSource="smtp.test.config" />
    </mailSettings>
  </system.net>

这在您的smtp.test.config

<?xml version="1.0" encoding="utf-8" ?>
<smtp>
  <network host="smtp.test.com" port="244" userName="test" password="secret" />
  <specifiedPickupDirectory pickupDirectoryLocation="C:\temp\mails"/>
</smtp>

这适用于.NET 2.0(甚至可能是1.x),它适用于每个配置部分 - 但不适用于配置部分组,如{{1 }}

当然,您现在可以创建其他配置文件,例如<system.web>等等,现在您的问题已经减少到替换web.config中的一行。

您可以使用安装脚本,XML预处理器甚至是人工干预来完成此操作。

它并没有像.NET 4 and the web.config transformations那样完全解决问题,但这是一步和一点帮助。

答案 1 :(得分:1)

在您的主web.config上,将以下属性添加到appSettings

<appSettings file="Web.site1.config">

然后,asp.net将这两个文件视为一个。您可以修改web.config包含其他外部文件,具体取决于网站。

答案 2 :(得分:0)

您可以在.Net Framework 4中执行此操作.ScottGu在其recent talk in Sweden中显示了它的快速演示。在他的例子中,他有分期,制作等,每个文件都有(可能)不同的内容。