Azure 网站\u HTTPLOGGING\u容器\u URL是隐藏的应用程序设置吗?

Azure 网站\u HTTPLOGGING\u容器\u URL是隐藏的应用程序设置吗?,azure,azure-web-app-service,Azure,Azure Web App Service,交换插槽时,我们会收到以下消息: 但两个web应用程序的应用程序设置中都不存在网站\u HTTPLOGGING\u容器\u URL设置。我知道它来自于启用Web应用程序诊断日志,但不知何故它是隐藏的 问题是,这将导致IIS在生产插槽中重新启动,从而导致停机,直到完成所有初始化任务。无法将此设置配置为“插槽设置”(这将阻止编辑应用程序设置) 奇怪的是,DIAGNOSTICS_AZUREBLOBCONTAINERSASURL在应用程序设置中可见(它也是一个诊断日志配置) 网站\u HTTPLOGG

交换插槽时,我们会收到以下消息:

但两个web应用程序的应用程序设置中都不存在网站\u HTTPLOGGING\u容器\u URL设置。我知道它来自于启用Web应用程序诊断日志,但不知何故它是隐藏的

问题是,这将导致IIS在生产插槽中重新启动,从而导致停机,直到完成所有初始化任务。无法将此设置配置为“插槽设置”(这将阻止编辑应用程序设置)

奇怪的是,DIAGNOSTICS_AZUREBLOBCONTAINERSASURL在应用程序设置中可见(它也是一个诊断日志配置)

网站\u HTTPLOGGING\u容器\u URL是隐藏的应用程序设置吗

简言之,答案是肯定的。这是一个隐藏的应用程序设置,用于存储web服务器日志的blob容器url

在诊断日志中启用web服务器日志后,它将在应用程序设置中添加存储容器url。无法在应用程序设置中更改它

在我看来,我认为交换web应用程序时必须更改此值。因为生产槽可以设置自己的web服务器日志存储容器。如果未更改此选项,则可能会在blob容器中更改日志信息

您可以在KUDU控制台的环境变量中找到它,如下所示

打开库杜

然后单击环境并查找环境变量


更新:


问题是,更改应用程序设置将执行IIS重置,这将关闭生产插槽

据我所知,交换操作不会导致IIS在生产插槽中重新启动。在切换到生产插槽之前,它将在暂存插槽中自动预热

交换操作如下所示:

1.标记为“插槽”的应用程序设置和连接字符串从生产插槽中读取,并应用于暂存插槽中的站点。使站点的工作进程重新启动,以使这些更改生效,并作为进程环境变量可见

2.然后对暂存槽中的站点进行预热。要预热站点,会向站点的根目录发出HTTP请求,请求站点应该运行的每个VM实例。预热请求的用户代理标头设置为“SiteWarmup”

3.预热完成后,将交换生产和暂存插槽中站点的主机名。现在,已在暂存槽中预热的站点开始获得生产流量,而以前位于生产槽中的站点现在位于暂存槽中

4.现在位于暂存槽中的站点将使用与暂存槽关联的应用程序设置和连接字符串进行更新。这会导致该站点重新启动,但它不再位于生产插槽中,所以重新启动是无害的

但有时,在将生产设置应用于暂存插槽之后以及主机名的实际交换之前暂停会很有用

现在,azure web app有另一个交换:

使用“与预览交换”选项时,应用程序服务会执行以下操作:

1.保持目标插槽不变,因此该插槽上的现有工作负载(如生产)不会受到影响

2.将目标插槽的配置元素应用于源插槽,包括插槽特定的连接字符串和应用程序设置。 使用上述配置元素在源插槽上重新启动工作进程

3.完成交换时:将预热的源插槽移动到目标插槽中。在手动交换中,目标插槽被移动到源插槽中

4.取消交换时:将源插槽的配置元素重新应用到源插槽

您可以预览应用程序在目标插槽配置中的行为。完成验证后,您可以在单独的步骤中完成交换。此步骤还有一个额外的优点,即源插槽已经使用所需的配置进行了预热,并且客户端不会经历任何停机

您可以在下面找到它:


问题在于,更改应用程序设置将执行IIS重置,这将关闭生产插槽。这违背了蓝绿互换的观点。谢谢你的透彻解释——一切都有道理。