我应该在IHttpModule中使用什么事件来禁用网站?

时间:2010-12-03 09:33:06

标签: c# asp.net httpmodule

出于许可原因,我想以编程方式禁用网站,我想在httpmodule中执行此操作。

我试图重定向上下文:

public void Init(HttpApplication context)
{
    context.Response.Redirect("http://vls.pete.videolibraryserver.com");
}

但我收到错误:

Response is not available in this context.

任何人都知道如何有效地禁用网站,最好将它们发送到自定义页面。

4 个答案:

答案 0 :(得分:2)

您可以使用BeginRequest事件进行重定向,如下所示:

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

void context_BeginRequest(object sender, EventArgs e)
{
    HttpApplication application = (HttpApplication)sender;
    application.Context.Response.Redirect("http://vls.pete.videolibraryserver.com");
}

答案 1 :(得分:0)

使用Server.Transfer,因为如果自定义页面位于同一台计算机上,这将保存往返行程; HTTPModule BeginRequest should us Response.Redirect or Server.Transfer(这是我自己回答的问题 - 不是试图自我推销)

答案 2 :(得分:0)

关闭网站的更好方法可能是以编程方式将 App_Offline.htm 文件写入网站的根目录。引用Scott Guthrie's blog

  

“app_offline.htm的工作原理是这样的   您将此文件放在。的根目录中   应用。当ASP.NET看到它时,它   将关闭应用程序域   应用程序(而不是重新启动它   请求)而是发回   app_offline.htm文件的内容   回应所有新的动态   请求申请。什么时候   你完成了更新网站   删除文件,它将返回   在线“。

答案 3 :(得分:0)

public void Init(HttpApplication context)
{

    context.Response.Write("for licence visit this <a href=\"http://vls.pete.videolibraryserver.com\">link</a>");
    context.Response.End();

}

您可以使用此代码