IIS7中的DefaultAppPool和Classic .NET AppPool有什么区别?

时间:2009-04-17 06:59:29

标签: iis web-applications iis-7 application-pool

我在IIS中遇到超时问题。在web.config中,会话超时设置为60分钟,但在20分钟后会话结束。

此问题仅发生在IIS7中,而不发生在IIS5中。

经过一番调查后,我发现这是由于应用程序池超时造成的。如果应用程序池在没有执行任何操作的情况下保留20分钟,则IIS将结束会话。

如果应用程序使用的是defaultAppPool,则会发生这种情况,但如果我将App Pool更改为经典的.NET App Pool,则不会发生超时。

两种模式都有空闲超时,但在DefaultAppPool中只发生

  • 这是为什么?
  • 经典.NET AppPool与DefaultAppPool有什么区别?
  • Classic和Integrated之间的管道有什么区别?

4 个答案:

答案 0 :(得分:57)

IIS7有一些重大更改可以更好地支持WCF,其中一个关键部分是新的集成应用程序池。 PDC的这次会议从使WCF服务表现更好的角度讨论了其中的一些挑战:http://channel9.msdn.com/pdc2008/TL38/

此页面概述了IIS7架构:http://learn.iis.net/page.aspx/101/introduction-to-iis7-architecture/。 我已经在本文中提供了一些关于以下两种不同类型的应用程序池的关键信息:

  

集成应用程序池模式

     

当应用程序池在。时   集成模式,你可以采取   集成的优势   IIS的请求处理体系结构   和ASP.NET。当一个工人进程   应用程序池收到一个   请求,请求通过   有序的事件列表。每个活动   调用必要的本机和托管   用于处理部分内容的模块   请求并生成响应。   跑步有几个好处   集成模式下的应用程序池。   首先是请求处理模型   IIS和ASP.NET集成在一个   统一过程模型。这个模型   消除以前的步骤   在IIS和ASP.NET中重复,例如   认证。另外,   集成模式使能   托管功能的可用性   所有内容类型。

     

经典应用程序池模式

     

当应用程序池在Classic中时   模式,IIS 7.0处理请求,如   IIS 6.0工作进程隔离模式。   ASP.NET请求首先通过   IIS中的本机处理步骤   然后路由到Aspnet_isapi.dll   处理托管代码   托管运行时。最后,请求   通过IIS路由回发送   响应。这种IIS的分离   和ASP.NET请求处理模型   导致一些重复   处理步骤,如   身份验证和授权。   此外,托管代码功能,   例如表单身份验证,仅限   可用于ASP.NET应用程序或   你有脚本的应用程序   映射所有要处理的请求   ASPNET_ISAPI.DLL。一定要测试你的   现有的申请   集成模式下的兼容性   在升级生产之前   环境到IIS 7.0和分配   应用程序到应用程序池   集成模式。你应该只添加   应用程序池的应用程序   在经典模式下如果应用程序   无法在集成模式下工作。对于   例如,您的应用程序可能依赖   在从中传递的身份验证令牌上   IIS到托管运行时,以及到期   到IIS 7.0中的新架构,   这个过程打破了你的申请。

答案 1 :(得分:4)

经典池通过使用IIS和ISAPI的单独处理管道来处理应用程序池中的请求。集成使用集成管道,IIS和ASP.NET(更好的性能)仅使用一个进程利用IIS 7.0的改进功能。 好的做法是为每个应用程序创建一个新的应用程序池,然后根据应用程序要求进行单独配置。


经典模式遵循以下步骤:

1.通过IIS核心接收传入的HTTP请求。

2.请求通过ISAPI处理。

3.请求通过ASP.NET处理。

4.请求通过ISAPI传回。

5.请求通过最终交付HTTP响应的IIS核心传回


集成模式使用:

1.通过IIS核心和ASP.NET接收传入的HTTP请求。

2.适当的处理程序执行请求并传递HTTP响应

按照增加web.config中的会话超时

记住增加这会导致应用程序消耗更多资源,例如内存

答案 2 :(得分:2)

我认为你的问题有答案。 IIS 6和7具有应用程序池超时的概念,这与会话超时不同。

模式之间有什么区别......已经解决了。我不确定您的管道问题和模式差异如何与您的问题相关 - 超时。

一些观点:在任何流量的网站上都不会发生空闲超时。您可能遇到的问题只发生在QA网站或开发框中。空闲超时设置的存在是为了节省开发盒和5美元/月托管公司的资源,这些公司有大量未充分利用的网站(例如我的博客)。您可能不希望公共站点上的空闲超时。

会话超时 - 在网络配置中设置,如果用户未命中服务器,则会话超时。

空闲超时根本没有人触摸网络服务器20分钟,因此请关闭以节省资源。在IIS 6中,这是在应用程序池的性能选项卡上 - 并且很容易禁用。在IIS 7中,您可以在应用程序池高级设置或processModel element中设置。我没有像IIS 6那样运行IIS 7,但它看起来像是从web.config中删除元素,或者设置为0,获得无限的空闲超时。

答案 3 :(得分:0)

DefaultAppPool忽略web.config中会话超时的设置,但ASPNet App Pool将使用web.config中的设置。