如何为Azure中的不同插槽提供不同的Web.config文件

问题描述 投票:3回答:2

如何为不同的Azure插槽提供不同的Web.config文件。

我有一个与同一网站的暂存和生产槽我不希望暂存槽是公开的(它只用于测试等),所以我通过web.config文件为该槽设置了身份验证。

问题是,当我上传更改时,生产槽获得与暂存槽相同的web.config文件,该版本设置为仅允许通过身份验证进行访问,并且参数也不同,因此生产槽最终无法访问,我必须在生产槽中手动更改web.config文件以使其工作。

我想有一些方法为生产槽定义一个不同的web.config文件。

更新(在问题中添加更多信息):

我正在使用我的本地机器进行测试(使用本地服务器),即开发环境。 网站是wordpress(wordpress使用php)。

暂停插槽仅供少数人使用,未连接到我的本地Lan,当我有选择地希望他们在将产品发送到生产之前测试我的网站(不同的操作系统,不同平台,不同的移动电话......)时。我可以停止暂存插槽,当我不使用它时,生产资源不会受到影响。 我已经在为不同的connectionStrings和参数使用AppSettings。我不知道如何使用它来定义不同的身份验证设置..?我在web.config文件中使用了身份验证设置(由暂存插槽使用)。

我的web.config文件:

<configuration>
  <system.web>
    <authorization>
      <allow users="[email protected], [email protected], [email protected]"/>
      <deny users="*"/>
    </authorization>
  </system.web>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="WordPress: http://contoso.azurewebsites.net" patternSyntax="Wildcard">
          <match url="*"/>
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
          </conditions>
          <action type="Rewrite" url="index.php"/>
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
  <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>
azure
2个回答
1
投票

您使用的插槽不正确。暂存插槽并不意味着是用于测试的长期应用程序。这些用于在部署时对应用程序进行部署和短期自动测试。

此外,如果您的产品和分段槽几乎相同,那么如果它与生产相同,那么保护分期的重点是什么?

总而言之 - 没有办法做你想做的事。因此,您可以设置单独的WebApp测试并通过web.config保护它。


0
投票

有几种方法可以完成你想要做的事情。虽然我同意Trailmax - 这似乎是对插槽的预期用途的误用。请记住,插槽与生产槽共享资源(CPU,内存等)。如果您正在使用插槽来进行集成和测试环境,并且有些事情会横向发展,那么您正在影响生产资源。这真的不是一个好主意。

但是如果你想要走这条路,你可以:

  1. 使用插槽以及不同的构建配置和关联的web.config转换。例如,如果您的生产站点是foo.azurewebsites.net,则可以定义名为“staging”的临时插槽。您可以直接在foo-staging.azurewebsites.net上发布到该位置。定义一个名为Staging的单独构建配置,并创建一个web.staging.config转换,将基础web.config更新为要部署到临时插槽的值。确保在发布时选择foo-staging目标,并选择“staging”作为构建配置。
  2. 如果环境因AppSettings和ConnectionStrings而不同,请在Web App的“应用程序设置”部分中定义特定于插槽的值。这些覆盖web.config中的任何内容。这是我个人最喜欢的方法。
© www.soinside.com 2019 - 2024. All rights reserved.