Fra*_* Fu 4 html asp.net iis warm-up
我当前正在使用IIS 的ApplicationInitialization功能来预热我的ASP.NET应用程序。我已经将属性remapManagedRequestsTo设置为“ warmup.html”。
<applicationInitialization remapManagedRequestsTo="warmup.html" skipManagedModules="true" doAppInitAfterRestart="true" >
<add initializationPage="/home" />
<add initializationPage="/about-us" />
</applicationInitialization>
Run Code Online (Sandbox Code Playgroud)
它运行良好,但是当Warmup.html的内容返回到浏览器时,我想返回一个自定义状态代码。这样,当我在部署后进行一些烟雾测试时,我会知道预热何时完成。
我尝试使用URL重写将状态代码从200更改为555,以提供warmup.html,它确实更改了状态代码,但不提供warmup.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>
Run Code Online (Sandbox Code Playgroud)
有什么办法可以同时提供warmup.html的内容并返回555的自定义状态代码?
终于在Morten Bock撰写的博客文章中找到了我的答案
原来,我必须删除两个属性remapManagedRequestsTo和 skipManagedModules(默认值为false),这使我们有了
<applicationInitialization doAppInitAfterRestart="true">
<add initializationPage="/home" />
<add initializationPage="/about-us" />
</applicationInitialization>
Run Code Online (Sandbox Code Playgroud)
然后让URL Rewrite模块接管,但是当应用程序初始化发出由服务器变量标记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>
Run Code Online (Sandbox Code Playgroud)
然后将状态555视为自定义错误,并将用户定向到友好的热身页面warmup.html
<system.webServer>
<httpErrors errorMode="Custom">
<error statusCode="555" path="warmup.html" responseMode="File" />
</httpErrors>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
567 次 |
最近记录: |