应用程序池(Application Pool)是IIS中一个很重要的新功能,它增强了Web服务器的可用性和安全性,使用户可以为每个应用程序设置隔离,配置安全性,做性能优化。
一个应用程序池,可以服务多个应用程序,它是以一个w3wp.exe进程的形式运行在Windows系统当中。
要注意的是:只有当第一个请求到达时,Web服务器会建立这个应用程序池,而不是Web服务器启动时,把所有应用程序池一次性启动。这样性能不好。
通过IIS管理器,我们可能很方便的建立一个应用程序池,IIS6默认有一个DefaultAppPool,如果你不显式指定,所有的应用程序将使用这个池。
应用程序池的设置可以导出为xml文件,方便下次重新建立或部署。
如果是多CPU的服务器,还可以建立Web园,不过我没研究过。听说编码方面,得有所改变(比如Session就不能用inProcess的)。
你可以为每个应用程序池指定运行的帐号,默认也是建议的是以低权限的Net Service运行。如果有特别的需要,你还可以手工指定帐号和密码来运行这个应用程序。
当你指定以后,如果你编写如下代码:
private void Page_Load(object sender, System.EventArgs e) { Response.Write( "ASP.NET application executes using the identity :: <b>" + WindowsIdentity.GetCurrent().Name + "</b><br>"); }
输出:
应用程序池可以设置回闲置回收,自动重启以优化性能。
以前,我发现我在ASP.NET里Session老失效,后来才发现IIS 6默认20分钟回收一次进程,Session自然就失效了。。。
晚了,就写到这儿吧,这里有几篇文章,大家可以参考: