我目前正在使用应用程序初始化 https://learn.microsoft.com/en-us/iis/configuration/system.webserver/applicationinitialization/IIS 的功能来预热我的 ASP.NET 应用程序。我已经设置了属性重新映射托管请求至 to “热身.html”.
<applicationInitialization remapManagedRequestsTo="warmup.html" skipManagedModules="true" doAppInitAfterRestart="true" >
<add initializationPage="/home" />
<add initializationPage="/about-us" />
</applicationInitialization>
它运行良好,但我想在 Warmup.html 的内容返回到浏览器时返回自定义状态代码。这样,当我在部署后运行一些冒烟测试时,我就能知道预热何时完成。
我尝试过使用网址重写 https://learn.microsoft.com/en-us/iis/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module将状态代码从 200 更改为 555 以提供服务热身.html它确实更改了状态代码,但不提供其中的内容热身.html
<rewrite>
<rules>
<rule name="Change warm up status code" stopProcessing="true">
<match url="warmup.html" />
<action type="CustomResponse" statusCode="555" subStatusCode="0"/>
</rule>
</rules>
</rewrite>
有没有一种方法可以同时提供热身.html的内容AND返回自定义状态代码555?
终于在作者写的博客文章中找到了答案莫滕·博克 https://blog.mortenbock.dk/2018/02/14/how-to-add-a-warming-up-message-to-your-umbraco-site/
结果我必须删除这两个属性重新映射托管请求至 and 跳过托管模块(默认值为 false)这给我们留下了
<applicationInitialization doAppInitAfterRestart="true">
<add initializationPage="/home" />
<add initializationPage="/about-us" />
</applicationInitialization>
然后让 URL 重写模块接管,但我们希望在应用程序初始化发出由服务器变量标记的请求时重写响应代码APP_WARMING_UP
包含一个值1
。当满足此条件时,我们可以创建一个自定义响应作为操作,并使用 555 弹出 statusCode 属性。
<rewrite>
<rules>
<rule name="WarmUp" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{APP_WARMING_UP}" pattern="1" />
</conditions>
<action type="CustomResponse" statusCode="555" statusReason="Site is warming up" statusDescription="Try again shortly" />
</rule>
</rules>
</rewrite>
然后捕获状态 555 作为自定义错误并将用户引导至友好的预热页面热身.html
<system.webServer>
<httpErrors errorMode="Custom">
<error statusCode="555" path="warmup.html" responseMode="File" />
</httpErrors>
</system.webServer>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)