【问题标题】:Returning a custom response code for for serving static html when using IIS ApplicationInitialization remapManagedRequestsTo feature?使用 IIS ApplicationInitialization remapManagedRequestsTo 功能时返回用于提供静态 html 的自定义响应代码?
【发布时间】:2018-05-06 08:12:27
【问题描述】:

我目前正在使用 IIS 的ApplicationInitialization 功能来预热我的 ASP.NET 应用程序。我已将属性 remapManagedRequestsTo 设置为 "warmup.html"

<applicationInitialization remapManagedRequestsTo="warmup.html" skipManagedModules="true" doAppInitAfterRestart="true" >
  <add initializationPage="/home" />  
  <add initializationPage="/about-us" />      
</applicationInitialization>

它运行良好,但我想在将 Warmup.html 的内容返回到浏览器时返回自定义状态代码。这样当我在部署后运行一些冒烟测试时,我就能知道预热何时结束。

我尝试使用URL Rewrite 将状态码从 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>

有没有一种方法可以同时提供 warmup.html 的内容返回自定义状态代码 555

【问题讨论】:

    标签: html asp.net iis warm-up


    【解决方案1】:

    终于在Morten Bock写的博文中找到了我的答案

    原来我必须删除两个属性 remapManagedRequestsToskipManagedModules(默认值为 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 捕获为自定义错误并将用户引导至友好的预热页面 warmup.html

    <system.webServer>
        <httpErrors errorMode="Custom">
            <error statusCode="555" path="warmup.html" responseMode="File" />
        </httpErrors>
    </system.webServer>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多