扩展Asp.Net所需的帮助

时间:2020-03-06 14:25:22  来源:igfitidea点击:

众所周知,如果我将一个名为app_offline.htm的文件放在asp.net应用程序的根目录中,它将使该应用程序脱机,如此处所述。

我们还应该知道,虽然这很棒,但IIS实际上在处理过程中会返回404代码,而Microsoft不会对此做任何事情,如此处所述。

现在,由于Asp.Net通常具有很高的可扩展性,所以我认为应该没有办法超越此状态代码来返回503吗?问题是,我不知道从哪里开始进行此更改。

帮助!

解决方案

我们可以尝试在web.config中将其关闭。

<httpRuntime enable = "False"/>

我们可能可以通过编写自己的HTTP处理程序(实现System.Web.IHttpHandler接口的.NET组件)来实现。

这里有一篇很好的入门文章:
连结文字

app_offline.htm的处理在ASP.NET管道中进行了硬编码,无法修改:请参见HttpRuntime.cs中的CheckApplicationEnabled(),如果认为该应用程序会引发404错误离线。

但是,创建自己的HTTP模块以执行类似的操作当然是微不足道的-在这种情况下,OnBeginRequest处理程序可能看起来如下(所示为HttpHandler的实现,但是在HttpModule中,思路完全相同):

Public Sub ProcessRequest(ByVal ctx As System.Web.HttpContext) Implements IHttpHandler.ProcessRequest
    If IO.File.Exists(ctx.Server.MapPath("/app_unavailable.htm")) Then
        ctx.Response.Status = "503 Unavailable (in Maintenance Mode)"
        ctx.Response.Write(String.Format("<html><h1>{0}</h1></html>", ctx.Response.Status))
        ctx.Response.End()
    End If
End Sub

当然,这只是一个起点:通过使返回的HTML更加友好,我们也可以向用户显示一个漂亮的"我们马上回来"页面。