我这里说的不是如何解决路径重写的问题或者如何配置,而是解释一下站点、应用、虚拟目录的概念和作用,以及这三个东西在iis6和IIS7中的异同。因为站点、应用和虚拟目录是我们在IIS上搭建网站时肯定会遇到的,但是它们的概念是那么的模糊(至少对我来说)。我在网上找了一些资料来研究,其中有一篇很详细:了解IIS 7上的站点、应用、虚拟目录,但这里只是一个总结。
在IIS6中,应用和虚拟目录的概率有点模糊,但在IIS7之上,三者是标准化的,在IIS架构的层面定义了它们之间的层次关系。
在IIS6中,虽然有虚拟目录和应用这两个看似独立的概念,但是在IIS6中,应用实际上是一个虚拟目录,但是应用可以在medabase中设置appfriendly name、approot、appisolated和apppoolid的属性。但是,IIS6中的站点是一个例外,因为即使没有设置那些属性,它也不会被视为虚拟目录,而是一个应用程序。
在IIS7以上版本中(但目前我能接触到的IIS最高版本是win7中的IIS7.5),站点、应用、虚拟目录的概念已经标准化,不再像IIS6那样模糊。在IIS7中,它们是独立的概念,在IIS组织结构中呈现出一种层次关系:一个站点可以有一个或多个应用程序,一个应用程序可以有一个或多个虚拟目录,一个虚拟目录对应一个物理路径。默认情况下,一个站点至少有一个应用程序,称为根应用程序或默认应用程序,一个应用程序至少有一个虚拟控制器。它被称为根虚拟目录。让我们来看看我的IIS7.5上的一个站点的结构,以及这个站点如何对应IIS中的ApplicationHost.config文件。
注意:ApplicationHost.config文件位于目录:\ % windir % \ system \ inetsrv \ config中。
我的IIS中只有一个ID为13的站点,站点下有两个应用程序,cd和dh。从右边的config可以看到,其实除了cd和dh两个应用,site本身也是一个应用,也就是root应用。同时还可以看到每个应用下都有一个虚拟目录,也就是根虚拟目录,它作为这个应用的根目录,映射到这个应用所在的物理路径。当然,每个应用可以有多个虚拟目录,可以对应其他物理路径(比如dh应用下的镜像虚拟目录的物理路径可以做网络中另一台计算机的共享目录)。
在IIS7中(其实IIS6也一样,只是细节不同,有点模糊,需要进一步研究),一个站点运行在一个应用池中,一个应用池默认有一个w3wp.exe(worker process)。站点中的应用在这个w3wp.exe过程中运行在app域中(不同的应用运行在不同的app域中进行隔离),而同一个应用的虚拟目录运行在同一个app域下。但是,该站点下的应用程序不必运行在与该站点相同的应用程序池中,并且该应用程序可以指定与该应用程序的站点不同的应用程序池。
接下来,我将分别解释站点、应用程序和虚拟目录。
网站(网站)
一个站点包含一个或多个应用程序和一个或多个虚拟目录。我们可以通过绑定不同的站点以不同的方式访问该站点。这里的“绑定”包括两个方面,一是绑定协议,二是绑定信息。绑定协议用于指定与站点通信的协议。在IIS7中,一个站点可以使用的协议有http、https、net.tcp、net.pipe、net.msmq和net.formatname,当然对于一个网站来说,最常用的还是http和https。绑定信息定义了通信的基本信息,如IP地址、通信端口和站点的一些头信息。如前所述,您可以为一个站点添加各种绑定,并且您只需要在IIS中为一个站点“编辑绑定”。
应用程序(应用程序)
应用程序是为站点提供功能的基本单元。例如,一个购物网站可以包含两个应用程序:一个负责呈现商品供消费者选择并放入购物车,另一个应用程序可以专注于用户登录和支付业务。当一个站点只有一个应用程序时,这个应用程序是根应用程序或默认应用程序,它代表站点本身。在“应用程序路径='/'”的applicationHost中,路径='/'意味着该应用程序是该站点的根应用程序。
应用程序在IIS的应用程序池中运行,并由应用程序域隔离。应用程序可以在IIS中的任何应用程序池中运行,但不一定要在应用程序所在站点的应用程序池中运行。但是,使用托管代码开发的应用程序(如ASP.NET网站)必须在运行的应用程序池中运行。网。您可以在IIS中设置应用程序池,包括设置。NET版本(或非托管环境)并设置管道模式。
虚拟目录(虚拟目录)
虚拟目录是站点(实际上是应用程序)上的名称到本地计算机或远程计算机上的物理目录路径的映射。一个应用程序至少可以有一个虚拟目录。在applicationHost中的“virtualDirectorypath='/'”中,path='/'意味着虚拟目录是应用程序(或站点)的根虚拟目录。
当虚拟路径被设置为映射到物理路径时,物理路径中的目录名将成为站点(或应用程序)url的一部分。一个站点(应用程序)可以有多个虚拟目录。例如,站点中的虚拟目录“www.site.com/script'”映射到本地计算机上站点中的脚本文件夹,而“www.site.com/image'”映射到远程图片服务器上的“图像”文件夹。7 IIS7通过使用虚拟目录映射的目录路径目录下的web.config配置文件来管理虚拟目录及其子目录(可以使用applicationHost.config的sites/virtualDirectoryDefaults部分中的allowSubDirConfig='false '属性来关闭web.config对子目录的控制。)