什么是IIS和Asp.Net中的应用程序池?

什么是IIS和Asp.Net中的应用程序池?,.net,asp.net,iis,.net,Asp.net,Iis,如何在IIS中实现应用程序池 每个应用程序池是否相当于一个.Net AppDomain 或者它相当于一个.Net进程 应用程序池与IIS w3wp.exe的关系如何 这样说太简单了,但最好的思考方式是AppPool是一个AppDomains池。所有这些AppDomain都在单个工作进程(w3wp.exe)中运行 一,。每个应用程序池是否相当于一个.Net AppDomain 否,一个应用程序池可能有多个AppDomain。每个AppDomain代表一个正在运行的ASP.NET应用程序。许多ASP

如何在IIS中实现应用程序池

  • 每个应用程序池是否相当于一个.Net AppDomain
  • 或者它相当于一个.Net进程
  • 应用程序池与IIS w3wp.exe的关系如何
    这样说太简单了,但最好的思考方式是AppPool是一个AppDomains池。所有这些AppDomain都在单个工作进程(
    w3wp.exe
    )中运行

    一,。每个应用程序池是否相当于一个.Net AppDomain

    否,一个应用程序池可能有多个AppDomain。每个AppDomain代表一个正在运行的ASP.NET应用程序。许多ASP.NET应用程序可能属于单个应用程序池

    二,。或者它相当于一个.Net进程

    不完全是。见下文

    三,。应用程序池与IIS w3wp.exe的关系如何

    应用程序池表示数量有限的工作进程,这些进程可能承载更多的应用程序。这类似于SQL连接池如何在任意数量的请求之间共享有限数量的连接

    默认情况下,应用程序池只有一个工作进程(
    w3wp.exe
    ),除非您知道自己在做什么,否则通常最好不要使用此设置。不过,应用程序池可以配置为使用任意数量的进程

    工作进程实际上是在这里汇集的资源,而不是AppDomain。总是有相同数量的AppDe域,因为有ASP.NET应用程序(除非其中一个处于关闭状态,或者一个应用程序创建它自己的AppDe域),但是工作进程的数量是独立的;应用程序池为您提供特定数量的工作进程来处理特定数量AppDomain的请求


    应用程序池中的工作进程数设置为1(默认值)意味着池中的所有应用程序/应用程序域共享同一个工作进程。

    我知道这是一篇老文章,但我认为这是一个很好的强调:


    1个应用程序池(IIS)=1个请求队列(在HTTP.SYS中)+1个或多个w3wp.exe实例。

    另一个重要事项是
    应用程序安全性

    在以前版本的IIS中,工作进程以LocalSystem运行,这是一个功能强大的帐户,在服务器上具有系统管理员权限。由于LocalSystem可以访问操作系统上的几乎所有资源,因此会产生安全隐患。在IIS 6.0(引入应用程序池)中,可以在应用程序池级别设置工作进程的标识。应用程序池的标识是应用程序池的工作进程在其下运行的帐户。默认情况下,应用程序池在具有低级用户访问权限的NetworkService帐户下运行

    通过使用非常低权限的帐户(如NetworkService)运行工作进程,可以减少安全漏洞。但是,通过使用IIS管理器,可以将应用程序池配置为作为以下任何预定义帐户运行:

    NetworkService
    LocalSystem
    LocalService
    

    谢谢安德鲁。您还可以补充一下,什么时候创建应用程序池?将您的web应用程序放在池下有什么帮助?@shahkalpesh:在IIS6+中,我认为没有一个应用程序不在应用程序池中。您可能还会发现此链接很有用()