我们有一个 IIS 服务器,用于托管数百个独立的 Web 应用程序,托管这些应用程序的物理数据库服务器将在短时间内脱机进行维护(我们预计只需不到 15 分钟)。
在此期间,我们希望将任何网站的所有流量重定向到“我们目前正在进行维护”页面。
我意识到我可以通过访问每个 Web 应用程序并设置 IIS 重写规则来完成此操作,该规则将用户发送到该应用程序中的所有请求的另一个页面。但是,我们做这件事比做数据库维护要花更长的时间!
我尝试了三件事,但都没有奏效:
我一直在寻找一种简单的方法来将规则应用到所有站点,一举 - 然后能够在一个同样轻松的步骤中“撤消”该规则。到目前为止,我的尝试都没有奏效。我确实尝试将这个重写规则放在我的全局 web.config 中,位于 W:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="redirect all requests" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
</conditions>
<action type="Redirect" url="http://www.somedomain.com/maintenance" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这没有用。我们在 IIS 中运行 .NET 4.0 64 位,但“以防万一”我把同样的东西放在 32 位和 2.0 全局 web.config 文件中,但仍然没有变化。
我看到的另一个建议是app_offline.htm “特殊”文件,但我们又回到了同样的问题,将这个文件部署到我们所有应用程序的应用程序根目录比实际进行维护需要更长的时间。
我们所有的站点都在 …