`
guoyiqi
  • 浏览: 1013958 次
社区版块
存档分类
最新评论

IHttpModule.Init会被调用多次的原因(转自:http://lidup.blog.51cto.com/426277/140338)

 
阅读更多
IHttpModule.Init
最近正在写一个urlrewrite用到了ihttpmodule接口,所以研究了一下,如有不对地方请指出,我们大家一起学习。
先来介绍一下IHttpModule接口,该接口主要用来处理请求的,和IHtttpHandle一起完成客户端的请求。
当有客户端请求到来时,请求先到达inetinfo.exe进程中,IIS和Aspnet_isapi.dll都运行在该进程中,当发生服务器端错误时,该进程会重新启动,session会丢失。然后客户端请求到达aspnet_isapi.dll->aspnet_wp.exe 公共语言运行时就运行在aspnet_wp.exe进程中,然后就生成httpapplication对象,该对象会去init一个httpmodule对象,这时候就会调用IHttpModule.Init方法。因为web是支持并发的,因此当刚产生的httpapplication如果还没有处理完请求,客户端又发送了一个请求,这样在pipeline又会产生一个新的httpapplication对象,每产生一个httpapplication对象都会调用IHttpModule.Init方法。所以IHttpModule.Init方法不同于application_start方法,他会被调用多次。
分享到:
评论

相关推荐

    自定义IHttpModule实现URL重写示例代码

    这是本人博客上《用自定义IHttpModule实现URL重写》一文的示例代码,如果有未尽之处或者不明白之处请到本人博客上查看,网址是:http://blog.csdn.net/zhoufoxcn/archive/2009/07/14/4346356.aspx

    asp.net IHttpModule实现网站内容过滤

    `BeginRequest`在每次HTTP请求开始时被调用,而`EndRequest`则在请求处理结束时调用。这两个方法之间的任何处理都可以用来执行内容过滤。 实现IHttpModule的步骤如下: 1. **定义类并实现IHttpModule接口**: ...

    用IHttpModule做自己的URL重写

    标题中的“用IHttpModule做自己的URL重写”是指在ASP.NET框架中,利用IHttpModule接口实现自定义的URL重写功能。IHttpModule是ASP.NET的核心组件之一,允许开发者在HTTP请求生命周期的各个阶段插入自定义逻辑,如URL...

    IHttpModule应用

    `Init`方法在应用程序启动时被调用,用于初始化模块,而`Dispose`方法则用于释放模块占用的资源。 二、IHttpModule工作原理 IHttpModule与ASP.NET的HTTP管道(Pipeline)紧密相关。HTTP管道是一个事件驱动的模型,...

    用IHttpModule解决输入中文地址乱码问题

    3. **处理请求**:在`Init`方法中,订阅`BeginRequest`事件,当请求开始时,事件处理器会自动调用。在事件处理器中,获取当前请求的原始URL(`RawUrl`),并对其进行正确的编码转换。 ### 示例代码分析 下面是一个...

    ihttphandler_ihttpmodule

    Init方法在应用程序启动时调用,用于初始化模块,而Dispose()方法在模块不再需要时释放资源。通过IHttpModule,开发者可以在请求开始、结束、身份验证、错误处理等不同阶段进行干预。 在"HandlerFactoryTest"这个...

    在 ASP.NET 中执行 URL 重写.pdf

    在ASP.NET环境中,这通常意味着请求会被ASP.NET引擎捕获。在捕获到请求后,可以通过自定义的HTTP模块来实现URL重写逻辑,将请求重定向到新的URL。 #### 实现URL重写 ##### 构建URL重写引擎 为了实现URL重写,可以...

    cas对接 net系统说明文档

    CAS (Central Authentication Service) 是一种开放源代码的单点登录协议和服务框架,被广泛应用于教育机构及企业的身份管理系统中。本文档将详细介绍如何在.NET系统中集成CAS,以实现单点登录功能。 #### 二、准备...

    HttpModule检验Session值

    当一个HTTP请求到达服务器时,IIS会调用已注册的HttpModule集合中的每个模块,按照它们在web.config文件中的顺序执行BeginRequest事件。这为我们提供了一个理想的位置来检查Session和Cookie状态,因为这是请求处理...

    httpModules应用

    描述中提到的“博文链接:https://njm.iteye.com/blog/810504”可能指向一篇详细介绍如何使用HTTP模块的博客文章。由于链接无法在这里直接访问,我可以基于通常的HTTP模块知识进行阐述。 HTTP模块与ASP.NET的集成...

    HttpModule实例

    1. 首先,创建一个新的类并继承自`System.Web.IHttpModule`接口。 2. 实现`IHttpModule`接口中的两个方法:`Initialize`和`Dispose`。 3. 在`Initialize`方法中,使用`HttpApplication`对象的`Events`属性注册所需的...

    自实现的Asp.net AJAX框架的ASMX处理器--支持异步调用Web方法

    在Asp.net开发中,AJAX(Asynchronous JavaScript and XML)技术被广泛应用于构建富交互式的Web应用程序。AJAX允许页面部分更新,无需整体刷新,从而提升了用户体验。本主题聚焦于自实现的Asp.net AJAX框架中的ASMX...

    IHttpModule

    权限验证 防盗链 ,不用每一页都去做权限验证,只要实现接口就可以了

    C#写的URL REWRITE

    HTTP模块会在每个HTTP请求生命周期的不同阶段被调用,我们可以在“BeginRequest”事件中检查并修改URL。创建HTTP模块涉及注册模块、实现`IHttpModule`接口,并在`ProcessRequest`方法中编写重写逻辑。 3. **C#代码...

    lifecycle-of-an-aspnet-mvc-5-application

    - **IHttpModule.Init**:当模块被加载到 ASP.NET 应用程序时调用。 ##### 2. **请求处理阶段** - **HttpApplication.PostResolveRequestCache**:在请求缓存解析之后触发。 - **调用动作过滤器**:通过 `...

    《尚贤达猎头网站流量统计模块》,通过HTTP自定义模块实时获取asp.net网站访问流量,并保存到数据库

    通过HTTP自定义模块实时获取网站流量 二、支持平台:windows+IIS 三、安装方法: 1、将文件www.sunsharer.cn.dll复制到网站bin目录下; 2、将配置好的sqlstr.txt复制到网站bin目录下; 3、将数据库表加入到网站...

    C#使用IHttpModule接口修改http输出的方法

    本文实例讲述了C#使用IHttpModule接口修改http输出的方法。分享给大家供大家参考。具体实现方法如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; //修改http输出先建...

    asp.net用url重写URLReWriter实现任意二级域名第1/2页

    ASP.NET URL重写是Web开发中的一个重要技术,它...//www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx)以及博客文章(http://www.cnblogs.com/jzywh/archive/2005/09/29/246650.html,...

    CAS 单点登录安装笔记4 -- asp.net client端的设置

    在IT领域,单点登录(Single Sign-On,简称SSO)是一种身份验证机制,它允许用户在一个系统上登录后,无需再次验证即可访问其他多个相互信任的系统。CAS(Central Authentication Service)是Java开发的一个开源SSO...

Global site tag (gtag.js) - Google Analytics