请求进入 ASP.NET 引擎时将会发生什么情况
2009-02-22 22:45
267 查看
在 ASP.NET 之前,需要使用 ISAPI 筛选器来实现 IIS Web 服务器上的 URL 重写。由于 ASP.NET 引擎与 IIS 非常相似,因此可以使用 ASP.NET 进行 URL 重写。存在相似之处的原因在于 ASP.NET 引擎可以实现以下功能:
在处理请求时可以引发事件。
允许任意数量的 HTTP 模块处理所引发的事件,这与 IIS 的 ISAPI 筛选器相似。
将呈现被请求资源这项任务委托给 HTTP 处理程序,该处理程序与 IIS 的 ISAPI 扩展相似。
与 IIS 一样,ASP.NET 引擎在请求的有效期内将会触发事件,通过发信号来表示其处理过程从一个状态改变为了另一个状态。例如,当 ASP.NET 引擎首次响应请求时,BeginRequest事件将被触发。接下来触发的是AuthenticateRequest事件,该事件在已建立用户标识时出现。(此外,还有大量的其他事件:AuthorizeRequest、ResolveRequestCache和EndRequest,等等。这些事件属于System.Web.HttpApplication类;有关详细信息,请参阅位于以下网址的技术文档:HttpApplication Class Overview。)
正
如上一部分所讨论的,可以创建 ISAPI 筛选器以响应 IIS 引发的事件。同样,ASP.NET 提供了 HTTP 模块,该模块可以响应由
ASP.NET 引擎引发的事件。可以将 ASP.NET Web 应用程序配置为具有多个 HTTP 模块。对于由 ASP.NET
引擎处理的每个请求,将初始化每个已配置的 HTTP
模块,并允许将事件处理程序绑定到处理请求期间所引发的事件。请注意,对每个请求均使用了许多内置 HTTP 模块。其中的一个内置 HTTP 模块是FormsAuthenticationModule,该模块首先检查是否使用了窗体身份验证,如果使用,将检查是否对用户进行了身份验证。如果没有使用,会自动将用户重定向到指定的登录页面。
如
上所述,通过使用 IIS,传入请求将最终发送给 ISAPI 扩展,而 ISAPI 扩展的任务是返回特定请求的数据。例如,在请求传统的 ASP
网页时,IIS 将请求传递给 asp.dll ISAPI 扩展,该扩展的任务是返回被请求的 ASP 页面的 HTML 标记。ASP.NET
引擎使用相似的方法。初始化 HTTP 模块后,ASP.NET 引擎的下一项任务是确定应由哪个 HTTP 处理程序来处理请求。
所有通
过 ASP.NET 引擎传递的请求最终都将到达 HTTP 处理程序或 HTTP 处理程序工厂(HTTP 处理程序工厂仅返回 HTTP
处理程序的实例,然后使用该实例来处理请求)。最终的 HTTP 处理程序将返回响应,即呈现被请求的资源。此响应将被发送回 IIS,然后 IIS
将响应返回给提出请求的用户。
ASP.NET 包括许多内置的 HTTP 处理程序。例如,PageHandlerFactory用于呈现 ASP.NET 网页。WebServiceHandlerFactory用于呈现 ASP.NET Web 服务的响应 SOAP 信封。TraceHandler将向trace.axd呈现请求的 HTML 标记。
图
2 描述了如何处理对 ASP.NET 资源的请求。首先,IIS 接收到请求,并将请求调度给
aspnet_isapi.dll。接下来,ASP.NET 引擎对已配置的 HTTP 模块进行初始化。最后将调用正确的 HTTP
处理程序,并呈现被请求的资源,将所生成的标记返回给 IIS 和请求客户端。
![](http://i.msdn.microsoft.com/ms972974.urlrewriting_fig02%28zh-cn,MSDN.10%29.gif)
在
ASP.NET 之前,需要使用 ISAPI 筛选器来实现 IIS Web 服务器上的 URL 重写。由于 ASP.NET 引擎与 IIS
非常相似,因此可以使用 ASP.NET 进行 URL 重写。存在相似之处的原因在于 ASP.NET 引擎可以实现以下功能:
在处理请求时可以引发事件。
允许任意数量的 HTTP 模块处理所引发的事件,这与 IIS 的 ISAPI 筛选器相似。
将呈现被请求资源这项任务委托给 HTTP 处理程序,该处理程序与 IIS 的 ISAPI 扩展相似。
与 IIS 一样,ASP.NET 引擎在请求的有效期内将会触发事件,通过发信号来表示其处理过程从一个状态改变为了另一个状态。例如,当 ASP.NET 引擎首次响应请求时,BeginRequest事件将被触发。接下来触发的是AuthenticateRequest事件,该事件在已建立用户标识时出现。(此外,还有大量的其他事件:AuthorizeRequest、ResolveRequestCache和EndRequest,等等。这些事件属于System.Web.HttpApplication类;有关详细信息,请参阅位于以下网址的技术文档:HttpApplication Class Overview。)
正
如上一部分所讨论的,可以创建 ISAPI 筛选器以响应 IIS 引发的事件。同样,ASP.NET 提供了 HTTP 模块,该模块可以响应由
ASP.NET 引擎引发的事件。可以将 ASP.NET Web 应用程序配置为具有多个 HTTP 模块。对于由 ASP.NET
引擎处理的每个请求,将初始化每个已配置的 HTTP
模块,并允许将事件处理程序绑定到处理请求期间所引发的事件。请注意,对每个请求均使用了许多内置 HTTP 模块。其中的一个内置 HTTP 模块是FormsAuthenticationModule,该模块首先检查是否使用了窗体身份验证,如果使用,将检查是否对用户进行了身份验证。如果没有使用,会自动将用户重定向到指定的登录页面。
如
上所述,通过使用 IIS,传入请求将最终发送给 ISAPI 扩展,而 ISAPI 扩展的任务是返回特定请求的数据。例如,在请求传统的 ASP
网页时,IIS 将请求传递给 asp.dll ISAPI 扩展,该扩展的任务是返回被请求的 ASP 页面的 HTML 标记。ASP.NET
引擎使用相似的方法。初始化 HTTP 模块后,ASP.NET 引擎的下一项任务是确定应由哪个 HTTP 处理程序来处理请求。
所有通
过 ASP.NET 引擎传递的请求最终都将到达 HTTP 处理程序或 HTTP 处理程序工厂(HTTP 处理程序工厂仅返回 HTTP
处理程序的实例,然后使用该实例来处理请求)。最终的 HTTP 处理程序将返回响应,即呈现被请求的资源。此响应将被发送回 IIS,然后 IIS
将响应返回给提出请求的用户。
ASP.NET 包括许多内置的 HTTP 处理程序。例如,PageHandlerFactory用于呈现 ASP.NET 网页。WebServiceHandlerFactory用于呈现 ASP.NET Web 服务的响应 SOAP 信封。TraceHandler将向trace.axd呈现请求的 HTML 标记。
图
2 描述了如何处理对 ASP.NET 资源的请求。首先,IIS 接收到请求,并将请求调度给
aspnet_isapi.dll。接下来,ASP.NET 引擎对已配置的 HTTP 模块进行初始化。最后将调用正确的 HTTP
处理程序,并呈现被请求的资源,将所生成的标记返回给 IIS 和请求客户端。
在处理请求时可以引发事件。
允许任意数量的 HTTP 模块处理所引发的事件,这与 IIS 的 ISAPI 筛选器相似。
将呈现被请求资源这项任务委托给 HTTP 处理程序,该处理程序与 IIS 的 ISAPI 扩展相似。
与 IIS 一样,ASP.NET 引擎在请求的有效期内将会触发事件,通过发信号来表示其处理过程从一个状态改变为了另一个状态。例如,当 ASP.NET 引擎首次响应请求时,BeginRequest事件将被触发。接下来触发的是AuthenticateRequest事件,该事件在已建立用户标识时出现。(此外,还有大量的其他事件:AuthorizeRequest、ResolveRequestCache和EndRequest,等等。这些事件属于System.Web.HttpApplication类;有关详细信息,请参阅位于以下网址的技术文档:HttpApplication Class Overview。)
正
如上一部分所讨论的,可以创建 ISAPI 筛选器以响应 IIS 引发的事件。同样,ASP.NET 提供了 HTTP 模块,该模块可以响应由
ASP.NET 引擎引发的事件。可以将 ASP.NET Web 应用程序配置为具有多个 HTTP 模块。对于由 ASP.NET
引擎处理的每个请求,将初始化每个已配置的 HTTP
模块,并允许将事件处理程序绑定到处理请求期间所引发的事件。请注意,对每个请求均使用了许多内置 HTTP 模块。其中的一个内置 HTTP 模块是FormsAuthenticationModule,该模块首先检查是否使用了窗体身份验证,如果使用,将检查是否对用户进行了身份验证。如果没有使用,会自动将用户重定向到指定的登录页面。
如
上所述,通过使用 IIS,传入请求将最终发送给 ISAPI 扩展,而 ISAPI 扩展的任务是返回特定请求的数据。例如,在请求传统的 ASP
网页时,IIS 将请求传递给 asp.dll ISAPI 扩展,该扩展的任务是返回被请求的 ASP 页面的 HTML 标记。ASP.NET
引擎使用相似的方法。初始化 HTTP 模块后,ASP.NET 引擎的下一项任务是确定应由哪个 HTTP 处理程序来处理请求。
所有通
过 ASP.NET 引擎传递的请求最终都将到达 HTTP 处理程序或 HTTP 处理程序工厂(HTTP 处理程序工厂仅返回 HTTP
处理程序的实例,然后使用该实例来处理请求)。最终的 HTTP 处理程序将返回响应,即呈现被请求的资源。此响应将被发送回 IIS,然后 IIS
将响应返回给提出请求的用户。
ASP.NET 包括许多内置的 HTTP 处理程序。例如,PageHandlerFactory用于呈现 ASP.NET 网页。WebServiceHandlerFactory用于呈现 ASP.NET Web 服务的响应 SOAP 信封。TraceHandler将向trace.axd呈现请求的 HTML 标记。
图
2 描述了如何处理对 ASP.NET 资源的请求。首先,IIS 接收到请求,并将请求调度给
aspnet_isapi.dll。接下来,ASP.NET 引擎对已配置的 HTTP 模块进行初始化。最后将调用正确的 HTTP
处理程序,并呈现被请求的资源,将所生成的标记返回给 IIS 和请求客户端。
![](http://i.msdn.microsoft.com/ms972974.urlrewriting_fig02%28zh-cn,MSDN.10%29.gif)
在
ASP.NET 之前,需要使用 ISAPI 筛选器来实现 IIS Web 服务器上的 URL 重写。由于 ASP.NET 引擎与 IIS
非常相似,因此可以使用 ASP.NET 进行 URL 重写。存在相似之处的原因在于 ASP.NET 引擎可以实现以下功能:
在处理请求时可以引发事件。
允许任意数量的 HTTP 模块处理所引发的事件,这与 IIS 的 ISAPI 筛选器相似。
将呈现被请求资源这项任务委托给 HTTP 处理程序,该处理程序与 IIS 的 ISAPI 扩展相似。
与 IIS 一样,ASP.NET 引擎在请求的有效期内将会触发事件,通过发信号来表示其处理过程从一个状态改变为了另一个状态。例如,当 ASP.NET 引擎首次响应请求时,BeginRequest事件将被触发。接下来触发的是AuthenticateRequest事件,该事件在已建立用户标识时出现。(此外,还有大量的其他事件:AuthorizeRequest、ResolveRequestCache和EndRequest,等等。这些事件属于System.Web.HttpApplication类;有关详细信息,请参阅位于以下网址的技术文档:HttpApplication Class Overview。)
正
如上一部分所讨论的,可以创建 ISAPI 筛选器以响应 IIS 引发的事件。同样,ASP.NET 提供了 HTTP 模块,该模块可以响应由
ASP.NET 引擎引发的事件。可以将 ASP.NET Web 应用程序配置为具有多个 HTTP 模块。对于由 ASP.NET
引擎处理的每个请求,将初始化每个已配置的 HTTP
模块,并允许将事件处理程序绑定到处理请求期间所引发的事件。请注意,对每个请求均使用了许多内置 HTTP 模块。其中的一个内置 HTTP 模块是FormsAuthenticationModule,该模块首先检查是否使用了窗体身份验证,如果使用,将检查是否对用户进行了身份验证。如果没有使用,会自动将用户重定向到指定的登录页面。
如
上所述,通过使用 IIS,传入请求将最终发送给 ISAPI 扩展,而 ISAPI 扩展的任务是返回特定请求的数据。例如,在请求传统的 ASP
网页时,IIS 将请求传递给 asp.dll ISAPI 扩展,该扩展的任务是返回被请求的 ASP 页面的 HTML 标记。ASP.NET
引擎使用相似的方法。初始化 HTTP 模块后,ASP.NET 引擎的下一项任务是确定应由哪个 HTTP 处理程序来处理请求。
所有通
过 ASP.NET 引擎传递的请求最终都将到达 HTTP 处理程序或 HTTP 处理程序工厂(HTTP 处理程序工厂仅返回 HTTP
处理程序的实例,然后使用该实例来处理请求)。最终的 HTTP 处理程序将返回响应,即呈现被请求的资源。此响应将被发送回 IIS,然后 IIS
将响应返回给提出请求的用户。
ASP.NET 包括许多内置的 HTTP 处理程序。例如,PageHandlerFactory用于呈现 ASP.NET 网页。WebServiceHandlerFactory用于呈现 ASP.NET Web 服务的响应 SOAP 信封。TraceHandler将向trace.axd呈现请求的 HTML 标记。
图
2 描述了如何处理对 ASP.NET 资源的请求。首先,IIS 接收到请求,并将请求调度给
aspnet_isapi.dll。接下来,ASP.NET 引擎对已配置的 HTTP 模块进行初始化。最后将调用正确的 HTTP
处理程序,并呈现被请求的资源,将所生成的标记返回给 IIS 和请求客户端。
![](http://i.msdn.microsoft.com/ms972974.urlrewriting_fig02%28zh-cn,MSDN.10%29.gif)
相关文章推荐
- ASP.NET MVC从请求到响应发生了什么
- Asp.net MVC进入请求管道的过程
- 学习ASP.NET Core,怎能不了解请求处理管道[1]: 中间件究竟是个什么东西?
- 请求如何进入ASP.NET MVC框架
- 学习ASP.NET Core,怎能不了解请求处理管道[1]: 中间件究竟是个什么东西?
- 请求如何进入ASP.NET MVC框架
- Asp.net MVC进入请求管道的过程
- 请求帮助:公司要做一个ASP.NET的项目管理网站,各位朋友有什么好的框架可以推荐?
- asp.net 的那点事(1、当用户在浏览器地址栏输入了网址后,发生了什么?)
- ASP.NET Webform或者ASP.NET MVC站点部署到IIS下,默认情况下.json文件是不能被访问的,如果请求访问.json文件,则会出现找不到文件的404错误提示
- asp.net 的那点事(1、当用户在浏览器地址栏输入了网址后,发生了什么?)
- 学习ASP.NET Core,你必须知道“中间件”是什么?中间件如何注册?请求处理管道是如何通过中间件构建的?
- 了解什么是IFRAME ASP.NET
- asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别
- asp.net页面请求实现过程
- Asp.net AJAX 各版支持情况
- 解决asp.net的url传中文参数有乱码的情况
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动 解决方案
- 关于JQuery 中$.ajax函数利用jsonp实现Ajax跨域请求ASP.NET的WebService成功获取数据的案例
- 从0开始学习ASP.NET(2.0为例)系列——05WEB请求及一个ASP.NET请求的生与死