如何为不同的Azure插槽提供不同的Web.config文件。
我有一个暂存和制作插槽,网站我不希望公共广告位是公开的(它只用于测试等),所以我为此设置了身份验证插入web.config文件。
问题在于,当我上传更改时,生产槽获得与暂存槽相同的web.config文件,该槽仅设置为允许通过身份验证进行访问,并且参数也不同,因此生产槽最终无法访问,我必须在生产槽中手动更改web.config文件才能使其正常工作。
我想有一些方法为生产槽定义一个不同的web.config文件。
更新(在问题中添加更多信息):
我使用本地计算机进行测试(使用本地服务器),即开发环境 这些网站使用wordpress(wordpress使用php)。
只有少数人使用暂存插槽,而不是连接到我的本地局域网,当我有选择地让他们测试我的网站(不同的操作系统,不同的平台,不同的手机......)之前。当我不使用它时,我可以停止暂存槽,这样就不会影响生产资源 我已经将AppSettings用于不同的connectionStrings和参数。我不知道如何使用它来定义不同的身份验证设置..?我在web.config文件中使用了身份验证设置(由暂存槽使用)。
我的web.config文件:
<configuration>
<system.web>
<authorization>
<allow users="foo@gmail.com, foo2@foo2.com, foo3@gmail.com"/>
<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>
答案 0 :(得分:1)
您正在使用插槽错误。暂存插槽并不意味着是用于测试的长期应用程序。这些用于在部署时对应用程序进行部署和短期自动测试。
此外,如果您的产品和分段槽几乎完全相同,那么如果它与生产相同,那么保护分期的重点是什么?
总而言之 - 没有办法做你想做的事。因此,您可以设置单独的WebApp测试并通过web.config保护它。
答案 1 :(得分:0)
有几种方法可以完成你想要做的事情。虽然我同意Trailmax - 这似乎是对插槽的预期用途的误用。请记住,插槽与生产槽共享资源(CPU,内存等)。如果您正在为集成和测试环境使用插槽而某些方面有些问题,则会影响您的生产资源。这真的不是一个好主意。
但是如果你想要走这条路,你可以:
使用插槽以及不同的构建配置和关联的web.config转换。例如,如果您的生产站点是foo.azurewebsites.net,则可以定义一个名为&#34; staging&#34;的暂存插槽。您可以直接在foo-staging.azurewebsites.net上发布到该位置。定义一个名为Staging的单独构建配置,并创建一个web.staging.config转换,将基础web.config更新为要部署到临时插槽的值。确保在发布时选择foo-staging目标,并选择&#34; staging&#34;作为您的构建配置。
如果环境因AppSettings和ConnectionStrings而不同,请在Web App的“应用程序设置”部分中定义特定于插槽的值。这些覆盖web.config中的任何内容。这是我个人最喜欢的方法。