假设我们想在web应用程序启动后和web请求期间只执行一次或几次操作。
public class WebApp : HttpApplication
{
public override void Init()
{
base.Init();
this.BeginRequest += new EventHandler(this.OnFirstBeginRequest);
}
private void OnFirstBeginRequest(object sender, EventArgs e)
{
// do some action and if everything is OK, unbind this handler,
// because we need it executed only once at the first web request
this.BeginRequest -= new EventHandler(this.OnFirstBeginRequest);
}
}
将抛出以下异常:
事件处理程序只能绑定到HttpApplication事件IHttpModule初始化。
在HttpApplication
实例中使用事件处理程序来对应用程序的第一个请求执行一些代码是没有意义的,因为每次创建新的HttpApplication
实例时,它都会重新绑定这些事件,并且事件处理程序中的代码将再次运行。
ASP创建了多个HttpApplication
实例。. NET工作进程。出于性能的考虑,它们被集中在一起,但是对于您的web应用程序,肯定可以有多个HttpApplication
服务请求实例。
这里有一篇很好的关于这个主题的文章