【问题标题】:How can I indicate to users that my IIS website is undergoing maintenance?如何向用户表明我的 IIS 网站正在进行维护?
【发布时间】:2010-09-22 23:02:09
【问题描述】:

对于我的 IIS 网站,我想将所有请求重定向到一个页面。这样做的目的是我想对我所有的 Web 应用程序使用的数据库进行一些维护(使其脱机)。我在这个网站下运行了大约 50 个网络应用程序,所以我想避免访问它们中的每一个来改变一些东西。我在想我可以在 machine.config 中进行一次更改吗?任何提示将不胜感激。

【问题讨论】:

    标签: iis redirect


    【解决方案1】:

    如果您使用的是 ASP.NET 2.0(或更高版本),您可以在根目录下放置一个 app_offline.htm 页面。

    More info here.

    【讨论】:

    • 这很酷,我不知道。虽然我们工作的网站是 aspx 和 htm 页面的混合,所以它不适合我们。
    • 很好,我也没有意识到这一点。
    • 我在阅读 Scott Gu 的博客时发现了 app_offline.htm,但很惊讶我没有在其他地方读到它。它像宣传的那样工作,这很有帮助。
    • +1 注意:这会返回 503 响应,这正是您在大多数情况下(以及在 OP 情况下)想要的结果
    • 嗯....当我使用此解决方案时,所有页面都得到 404。不是 503。在这种特殊情况下,这没关系,但通常情况下就不行了。
    【解决方案2】:

    在网络配置中

     <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="Rewrite" url="index.php" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    

    【讨论】:

    • 给予 +1 是因为它是一种替代解决方案(这恰好对我有用),但是应该指出,重写与重定向不同,因此如果需要真正的重定向,那么这行不通。
    • 如果您需要重定向,您只需将action type 更改为Redirect。
    • 此重写规则只会将请求重定向到文件夹,而不是文件。 OP 想要重定向 all 请求。为此,请删除 &lt;conditions&gt; 标记。
    • 用于重定向
    • 美妙的是,这仍然适用于 Windows Server 2016 上的 IIS 10!
    【解决方案3】:

    使所有页面不可用,可能会停止当前网站并在其位置创建一个全新的完全空白的网站。然后为 404(找不到文件)错误建立一个自定义错误页面。自定义错误是 IIS 中网站属性对话框上的一个选项卡。只需创建您要发送的页面,然后将自定义错误选项卡上的 404 条目更改为指向您刚刚创建的新文件。

    【讨论】:

    • 这是一个极好的建议,适用于我的大型混合 .NET/经典 ASP 应用程序。非常容易实现。
    • 这有一个很大的问题,虽然从美学上讲 UI 可以工作,但如果你碰巧有一个搜索引擎在爬你的网站,它会突然收到一堆 404 并删除内容来自搜索结果。
    【解决方案4】:

    在 IIS 10 中有一个可选组件“HTTP Redirect”(它可能在早期的 IIS 版本中可用;我不知道)。 它允许您使用任何常见的 HTTP 重定向响应代码设置非常简单的包罗万象的重定向。 这可以通过 Windows Server 2019 中的服务器管理器安装。

    【讨论】:

      【解决方案5】:

      您能否在 IIS 中创建一个新站点,该站点绑定到端口 80,并带有一个空白主机标头(很像默认站点),然后停止其他站点?这样一来,所有请求都将由新站点处理,新站点可能只是一个静态 HTML 页面,通知用户该站点因维护而关闭。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-22
        • 2014-11-03
        • 2017-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多