一旦没有为Web应用程序设置自定义域,Azure App Service AlwaysOn就能完美运行。一旦添加了自定义域以及URL重写规则以将所有传入请求重定向到它,应用程序在一段时间不活动后开始缓慢响应。日志显示AlwaysOn仍然使用azure域并获取HTTP 301响应,而不是尝试请求新URL。
没有自定义域的日志:
2017-06-20 17:17:02 ZZTESTSITE GET / X-ARR-LOG-ID=743965b6-d3e2-42b9-9353-7772f9fbc898 80 - ::1 AlwaysOn ARRAffinity=b5289afa9cd711b67c1fe9137a6e3ff232f80bd3fa1bd96e9fc89992472b4e57 - zztestsite.azurewebsites.net 200 0 0 11433 652 15
使用自定义域
进行日志记录2017-06-21 13:28:52 ZZTESTSITE GET / X-ARR-LOG-ID=ffcd5992-5019-48ca-a386-76443a8c7226 80 - ::1 AlwaysOn ARRAffinity=b5289afa9cd711b67c1fe9137a6e3ff232f80bd3fa1bd96e9fc89992472b4e57 - zztestsite.azurewebsites.net 301 0 0 553 652 46
网址重写规则:
<rule name="Redirect requests from default azure websites domain to custom one" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^zztestsite\.azurewebsites\.net$" />
</conditions>
<action type="Redirect" url="http://mycustomdomain.com" redirectType="Permanent" appendQueryString="false"/>
</rule>
此外,启用SSL并添加其他规则以将所有请求重定向到HTTPS后,也会出现同样的问题。
我该如何解决这个问题?我发现了两个可能的方向:
请告知。
答案 0 :(得分:5)
尝试将此行添加到您的条件中:
<conditions>
<add input="{HTTP_HOST}" pattern="^zztestsite\.azurewebsites\.net$" />
<add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
</conditions>
这告诉不重定向到Always On ping。另请注意,我删除了MatchAny
,因为您真的想要MatchAll(当您只有一个时无关紧要)。
有关更完整的示例,请参阅here。它将http重定向到https,但核心思想与Always On请求相同。这个例子是一个xdt变换,所以看起来与“直接”变换有点不同。配置。实际上,您可能会考虑使用此类xdt而不是污染您的web.config。
答案 1 :(得分:2)
最后我找到了适用的规则
<rule name="AlwaysOn agent requests without any redirections" stopProcessing="true">
<match url="^$"/>
<conditions>
<add input="{HTTP_USER_AGENT}" pattern="^AlwaysOn$" />
</conditions>
<action type="None" />
</rule>
我把它作为第一条规则。然后其他规则遵循&#34; azure域到自定义域重定向&#34;和#34; HTTP到HTTPS&#34;。 大卫的回答很有帮助,但解决了一个不同的问题。