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

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

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

经过一番调查,我发现这是由于应用程序池的超时。 如果应用程序池闲置20分钟,IIS会结束会话。

如果应用程序正在使用defaultAppPool,则始终会发生这种情况,但如果将App Pool更改为传统的.NET App Pool,则不会发生超时。

两种模式都有空闲超时,但只有在DefaultAppPool发生这种情况。

  • 为什么是这样?
  • 是一个经典.NET AppPool和DefaultAppPool之间的区别是什么?
  • Classic和Integrated之间有什么不同?

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

本页面对IIS7体系结构进行了很好的概述: http : //learn.iis.net/page.aspx/101/introduction-to-iis7-architecture/ 。 我已经包含了本文中关于以下两种不同应用程序池的一些重要信息:

集成应用程序池模式

当应用程序池处于集成模式时,可以利用IIS和ASP.NET的集成请求处理体系结构。 当应用程序池中的工作进程收到请求时,请求会通过一个有序的事件列表。 每个事件都会调用必要的本地和托pipe模块来处理部分请求并生成响应。 在集成模式下运行应用程序池有几个好处。 首先将IIS和ASP.NET的请求处理模型集成到统一的stream程模型中。 此模型消除了以前在IIS和ASP.NET中重复的步骤,如身份validation。 此外,集成模式可以使所有内容types的托pipefunction可用。

经典应用程序池模式

当应用程序池处于经典模式时,IIS 7.0将以IIS 6.0工作进程隔离模式处理请求。 ASP.NET请求首先经过IIS中的本机处理步骤,然后路由到Aspnet_isapi.dll以处理托pipe运行时中的托pipe代码。 最后,请求通过IIS路由回来发送响应。 IIS和ASP.NET请求处理模型的这种分离会导致一些处理步骤(如身份validation和授权)的重复。 此外,托pipe代码function(例如表单身份validation)仅适用于ASP.NET应用程序或您已将脚本映射到aspnet_isapi.dll处理的所有请求的应用程序。 在将生产环境升级到IIS 7.0并将应用程序分配到集成模式下的应用程序池之前,请确保在集成模式下testing现有应用程序的兼容性。 如果应用程序无法在集成模式下工作,则应该只在Classic模式下将应用程序添加到应用程序池。 例如,您的应用程序可能依赖于从IIS传递到受pipe运行时的身份validation令牌,并且由于IIS 7.0中的新架构,该进程会中断您的应用程序。

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


经典模式遵循以下步骤:

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

2.请求通过ISAPI进行处理。

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

4.请求通过ISAPI传回。

5.请求通过最终传递HTTP响应的IIS内核传回


集成模式使用:

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

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

增加web.config中的会话超时

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

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

已经解决的模式之间有什么区别? 我不确定你的问题是关于pipe道和模式的差异与你的问题有关 – 超时。

一些观点:在有任何stream量的网站上不会发生空闲超时。 您可能遇到问题,只发生在质量保证站点或您的开发箱中。 空闲超时设置存在,以节省您的开发盒和$ 5 / month托pipe公司有很多未充分利用的网站(例如我的博客)的资源。 您可能不希望公共站点上的空闲超时。

会话超时 – 在Webconfiguration中设置,如果用户没有打到服务器,他们的会话超时。

空闲超时没有人触摸networking服务器20分钟,所以closures以节省资源。 在IIS 6中 ,这是在应用程序池的性能选项卡上 – 很容易禁用。 在IIS 7中,您可以在应用程序池高级设置或processModel元素中设置。 我不像IIS 6那样运行IIS 7,但它看起来像从web.config中删除元素,或设置为0,获取无限的空闲超时。

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