扩展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更加友好,我们也可以向用户显示一个漂亮的"我们马上回来"页面。