加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

扩展Asp.Net需要帮助

发布时间:2020-12-16 09:29:10 所属栏目:asp.Net 来源:网络整理
导读:正如大多数人所知,如果我在asp.net应用程序的根目录中删除名为app_offline.htm的文件,它将使应用程序脱机 as detailed here. 您还会知道,虽然这很好,但IIS实际上会在此过程中返回404代码,而Microsoft不会对此进行任何操作as mentioned here. 现在,由于Asp.Ne
正如大多数人所知,如果我在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更友好一点,您也可以向用户显示一个不错的“我们会马上回来”页面.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读