问题描述
我有一个作为Azure AppService运行的ASP.Net Core 2.2站点。作为配置的一部分,我有一个自定义域,该域启用了仅HTTPS 设置。
我还在我的Appservice上启用了始终在线设置。
根据本文 https://ruslany.net/2017/11/most-common-deployment-slot-swap-failures-and-how-to-fix-them/启用仅HTTPS 时,会忽略始终在线设置,因此,我的站点总是从第一个调用开始进行冷启动。
根据同一文章,如果处理了{warmup_request},则可以在web.config中设置规则条件以不处理 Redirect to HTTPS 规则。
但是,我的仅HTTPS 是在Azure的自定义域中设置的,而不是在web.config中的规则。
我正在使用以下代码在startup.cs中设置RouteOptions:
services.Configure<RouteOptions>(options =>
{
options.LowercaseUrls = true;
});
,并相信规则条件也可以使用options.ConstraintMap()
完成,但是我不确定表示以下内容所需的语法或方法:
<match url="(.*)" />
<conditions>
<add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
<add input="{REMOTE_ADDR}" pattern="^100?\." negate="true" />
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
在此方面的任何帮助将不胜感激
谢谢
解决方法
从撰写本文开始,“ https仅”已作为应用程序服务的内置功能添加,因此不再需要使用此重写规则。
关于如何最小化应用程序的冷启动-您可能要考虑按照App Service Warm-Up Demystified
中的说明将appinit配置添加到web.config中。