阿牛 - 专注.NET开发

如果梦想与实现之间有一道不可逾越的鸿沟,那么“执行力”就是跨越这道鸿沟的桥梁。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

应用程序池(Application Pool)是IIS中一个很重要的新功能,它增强了Web服务器的可用性和安全性,使用户可以为每个应用程序设置隔离,配置安全性,做性能优化。

 

一个应用程序池,可以服务多个应用程序,它是以一个w3wp.exe进程的形式运行在Windows系统当中。

要注意的是:只有当第一个请求到达时,Web服务器会建立这个应用程序池,而不是Web服务器启动时,把所有应用程序池一次性启动。这样性能不好。

通过IIS管理器,我们可能很方便的建立一个应用程序池,IIS6默认有一个DefaultAppPool,如果你不显式指定,所有的应用程序将使用这个池。

IIS6P21

 

应用程序池的设置可以导出为xml文件,方便下次重新建立或部署。

如果是多CPU的服务器,还可以建立Web园,不过我没研究过。听说编码方面,得有所改变(比如Session就不能用inProcess的)。

 

你可以为每个应用程序池指定运行的帐号,默认也是建议的是以低权限的Net Service运行。如果有特别的需要,你还可以手工指定帐号和密码来运行这个应用程序。

IIS6P22

 

当你指定以后,如果你编写如下代码:

private void Page_Load(object sender, System.EventArgs e)
{
  Response.Write(
   "ASP.NET application executes using the
           identity :: <b>" +
    WindowsIdentity.GetCurrent().Name + 
         "</b><br>");
}

 

输出:

IIS6P23

 

 

应用程序池可以设置回闲置回收,自动重启以优化性能。

IIS6P29

以前,我发现我在ASP.NET里Session老失效,后来才发现IIS 6默认20分钟回收一次进程,Session自然就失效了。。。

 

晚了,就写到这儿吧,这里有几篇文章,大家可以参考:

http://www.developer.com/net/asp/article.php/2245511

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/67e39bd8-317e-4cf6-b675-6431d4425248.mspx?mfr=true

posted on 2008-12-30 23:09  阿牛-专注金融行业开发  阅读(348)  评论(0编辑  收藏  举报