HttpModules的Init函数多次执行的问题

IHttpModule.Init 方法在MSDN上解释为HttpModule使用 Init 方法向特定事件注册事件处理方法。从我所看到的资料上也是这样解释的:当HttpApplication加载某个HttpModule时,会调用IHttpModule.Init()并利用这个机会来注册它所关心的事件。那么IHttpModule.Init 方法应该是在Application启动时执行初始化操作,并且只需要执行一次。 所以我们的一些初始化的东西也可以放在这里面。

问题因此而产生,IHttpModule.Init 方法并不是只执行一次。当使用框架页或者在同一个页面快速连贯地提交多次时,IHttpModule.Init 方法又开始执行了。到目前为止我还不知道是什么原因造成,希望高人指点一二。

我自己做了一个测试例子:从这里下载测试代码
解决方案中包含两个项目,一个是HttpModule,一个是普通的WebApplication。

HttpModule.Init 方法中使用如下语句

HttpContext.Current.Server.MapPath("web.config")

实现了一个查找web.config文件的功能。如果从根目录的Defalut.aspx页面启动,那么将得到正确的web.config路径。当跳转到子目录下的页面时,按理说HttpModule.Init 方法不可能有执行的机会。但是在子目录的页面上操作时,HttpModule.Init 方法再一次执行了。这时就会得到一个错误的web.config路径。


Technorati : Init函数 HttpModule

转载于:https://www.cnblogs.com/redfire0922/archive/2007/03/15/675549.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值