当前位置 : 主页 > 网络编程 > ASP >

扩展Asp.Net需要帮助

来源:互联网 收集:自由互联 发布时间:2021-06-24
正如大多数人所知,如果我在asp.net应用程序的根目录中删除名为app_offline.htm的文件,它将使应用程序脱机 as detailed here. 您还会知道,虽然这很好,但IIS实际上会在此过程中返回404代码,而Mi
正如大多数人所知,如果我在asp.net应用程序的根目录中删除名为app_offline.htm的文件,它将使应用程序脱机 as detailed here.

您还会知道,虽然这很好,但IIS实际上会在此过程中返回404代码,而Microsoft不会对此进行任何操作as mentioned here.

现在,由于Asp.Net一般是如此可扩展,我认为不应该有一种方法来过度使用这个状态代码来返回503吗?问题是,我不知道从哪里开始寻求改变.

救命!

app_offline.htm的处理在ASP.NET管道中是硬编码的,无法修改:请参阅HttpRuntime.cs中的CheckApplicationEnabled(),如果认为应用程序处于脱机状态,则会抛出非常不可配置的404错误.

但是,creating your own HTTP module做类似的事情当然是微不足道的 – 在这种情况下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更友好一点,您也可以向用户显示一个不错的“我们会马上回来”页面.

网友评论