首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIS7.5上集成的应用程序池、模块和HttpApplication管道

问IIS7.5上集成的应用程序池、模块和HttpApplication管道
EN

Stack Overflow用户
提问于 2011-08-12 22:52:58
回答 1查看 1.1K关注 0票数 0

给定一个以集成模式运行的应用程序池,该应用程序池能够为“托管处理程序请求”(获取一个aspx页面)以及“非托管处理程序请求”(获取一个jpg文件)提供服务。

在处理MHR请求时,应用程序池应考虑所有模块,但对于非MHR,不应考虑使用托管Handler先决条件标记的模块。

应用程序是否有两个不同的HttpAplication管道(一个用于MHR,另一个用于非MHR)?或者,他只有一个管道,并且能够根据请求决定引发哪个httpAplication事件处理程序?

我想,在httpApplication启动BeginRequest之前,应用程序池将决定请求是否被管理。至少在AuthenticateRequest之前。是那么回事吗?

链接中的

响应:

IIS提供的所有资源都映射到配置中的处理程序。如果配置映射不存在,则对资源的请求将收到404 HTTP状态。除了在管道开始之前进行的配置映射之外,处理程序映射还可以在请求执行过程中更改.

模块的Init函数只执行一次(可能在应用程序池启动时),而不依赖于托管的Handler前提条件?

我想apppool并没有为每个请求创建整个管道(注册httpaplication等等)。

提前谢谢你,

UPDATE1:在阅读了链接之后,我仍然“看到”两个不同的管道给出了一个应用程序池。对于不同的管道,我指的是在IIS管道中注册的两组不同的事件处理程序:

代码语言:javascript
复制
BEGIN_REQUEST
AUTHENTICATE_REQUEST
AUTHORIZE_REQUEST
RESOLVE_REQUEST_CACHE
MAP_REQUEST_HANDLER
ACQUIRE_REQUEST_STATE
PRE_EXECUTE_REQUEST_HANDLER
EXECUTE_REQUEST_HANDLER
RELEASE_REQUEST_STATE
UPDATE_REQUEST_CACHE
LOG_REQUEST
END_REQUEST

当集成模式下的应用程序池启动时,它可以查找模块部分并执行每个模块的Init功能(独立于先决条件设置)。每个模块的Init函数在某些IIS管道阶段注册自己。但是在运行时,当处理非托管请求时,应该跳过带有预处理托管处理程序的模块的事件处理程序。怎么能做到呢?

UPDATE2:据我所知,应用程序池( windows进程)承载ASP.Net运行时(httpRuntime in System.Web?)。此运行库包含一个httpApplication对象池。当应用程序池启动(或者直到第一个请求到达)时,会实例化几个httpApplications。此时调用httpModules的Init方法(在web.config中的模块下)。在IIS7集成模式出现之前,我认为所有的httpApplication对象都是克隆的,但是由于根据处理程序的请求类型(托管或非托管),应该考虑或不考虑某些httpModules,所以我推断httpRutime包含两个httpApplication池,或者可能给定的httpApplication对象只能处理托管处理程序请求或非托管哈德勒请求,而不是这两个.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-12 23:10:21

我想你可以读到这个http://blogs.msdn.com/b/tmarq/archive/2007/08/30/iis-7-0-asp-net-pipelines-modules-handlers-and-preconditions.aspx

在这里,您可以看到IIS只有一个管道。服务asp.net请求的“经典”方法始于IIS管道的EXECUTE_REQUEST_HANDLER事件。将经典模式下的ASP.NET视为IIS管道中的管道。

使用集成模式,您基本上可以在IIS管道系列事件中插入托管代码,例如将asp.net窗体身份验证添加到.jpg之类的静态文件中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7047156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档