【问题标题】:Multiple ASP.NET Configuration Files多个 ASP.NET 配置文件
【发布时间】:2011-01-05 04:07:22
【问题描述】:

我找到了许多关于为 Web 部署使用多个 ASP.NET 配置文件的信息。但是,我仍然不确定我是否可以完成我想要完成的事情。

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

有没有像指向不同的 .config 文件这样简单的事情,还是我需要做一些更复杂的事情?

编辑:我特别担心的一个问题是我还需要 system.net 中的邮件设置等设置。所以,我不希望覆盖 appSettings。

谢谢

【问题讨论】:

    标签: asp.net deployment web-config


    【解决方案1】:

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

    除了<appSettings> 上的file= 语句(仅适用于应用程序设置:-() 它不是“附加”设置 - 您只需将配置系统指向外部文件。

    所以你可以在你的 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),它适用于每个配置 section - 但不适用于配置 section groups&lt;system.web&gt; .

    当然,您现在可以创建额外的配置文件,例如 smtp.staging.config 等等,现在您的问题已减少到替换 web.config 中的一行。

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

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

    【讨论】:

    • 好的。我认为这可能是解决方案(感谢您验证它)。我希望我可以有两个完整的配置文件,我可以告诉构建或使用哪个。
    • 好吧,您始终可以在 Visual Studio 或 MSBuild 环境中定义构建后步骤,这会将适当的配置文件复制到您的输出目录
    • @marc_s - 我遇到了一个(小)问题。我收到“未声明 'smtp' 元素”的警告。它发生在外部文件上。关于为什么会发生这种情况的任何想法或建议?
    • @Jason:这只是 Visual Studio 智能感知,不是 100% 达标的。 VS 并不完全知道如何处理这些“部分”配置文件。但它有效 - 确实有效!
    • @marc_s - 是的。 :-) 我看到它有效。我只是不喜欢对我的项目发出警告。啊,好吧,我想我对此无能为力。不过,再次感谢您的帮助!
    【解决方案2】:

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

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

    然后,asp.net 会将这两个文件视为一个。您可以编辑web.config包含不同的外部文件,具体取决于站点。

    【讨论】:

    • 好的,这就是我开始的。但是,我还需要其他设置,例如 system.net 中的 SMTP 设置。这个解决方案是否考虑到了这一点? (我更新了我的问题以反映这一点。)
    • 适用于,不幸的是。没有其他配置部分支持这一点。
    【解决方案3】:

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

    【讨论】:

    • 很高兴听到这个消息。但是,我仍在使用 .NET 2,并且在可预见的将来不会升级。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多