如何获得扩展Asp.Net的技术支持?
- 内容介绍
- 文章标签
- 相关推荐
本文共计343个文字,预计阅读时间需要2分钟。
许多人都知道,如果删除ASP.NET应用根目录下的app_offline.htm文件,应用将进入脱机模式。虽然听起来很好,但在IIS实际操作中,删除此文件后可能会返回404错误。这是因为IIS需要时间来更新缓存,导致应用程序无法立即响应。
您还会知道,虽然这很好,但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更友好一点,您也可以向用户显示一个不错的“我们会马上回来”页面.
本文共计343个文字,预计阅读时间需要2分钟。
许多人都知道,如果删除ASP.NET应用根目录下的app_offline.htm文件,应用将进入脱机模式。虽然听起来很好,但在IIS实际操作中,删除此文件后可能会返回404错误。这是因为IIS需要时间来更新缓存,导致应用程序无法立即响应。
您还会知道,虽然这很好,但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更友好一点,您也可以向用户显示一个不错的“我们会马上回来”页面.

