HttpModulesを用いるAspを実現する.Netオフラインアプリケーション

4191 ワード

あるASPに対してNETアプリケーションがメンテナンスを行う場合、一部のお客様がプログラムにアクセスする場合があります.この場合、一部のプログラムを更新している場合は、間違ったページや黄色いページが表示される可能性があります.良い方法は、オフラインのページを提供することです.上にヒントがあります.たとえば、メンテナンス中で、お客様が後でアクセスできるようにするなどです.お客様がdefaultにアクセスするとaspxページの場合、管理者でない場合はOfflineページにリダイレクトさせます.HttpModulesを使用してこの機能を実現し、サーバにofflineという名前を置くことができます.htmlのファイルは、当時このファイルが存在していたとき、メンテナンスモードが開始され、web.configでは管理者マシンのIPを設定します.
<add key="AdminIP" value="127.0.0.1"/>
HttpModules:
/// <summary>
/// This is how you take an ASP.NET application offline the 
/// Arnold Matusz way with AppOfflineModule
/// </summary>
public class AppOfflineModule : IHttpModule
{
    public void Dispose()
    {

    }

    public void Init(HttpApplication context)
    {
        context.BeginRequest += new EventHandler(context_BeginRequest);
    }

    void context_BeginRequest(object sender, EventArgs e)
    {
        HttpApplication application = (HttpApplication)sender;
        HttpContext context = application.Context;
        if (File.Exists(Path.Combine(context.Server.MapPath("~"), "offline.html")))
        {
            string ip = context.Request.UserHostAddress;
            string adminIP = ConfigurationManager.AppSettings["AdminIP"];

            if (ip != adminIP)
            {
                context.RewritePath("~/offline.html");
            }
        }
    }
}
 

WebでconfigにこのModuleを登録します.
<httpModules>
    <add name="AppOfflineModule" type="AppOfflineModule"/>
</httpModules>
       ,     Offline.html ,         :We are currently down for maintenance。
       ,          ,     UI  。    Post     !
     Author:Petter Liu   http://wintersun.cnblogs.com