我已经在80端口设置了“默认网站”的IIS 7,并且在“网站”下添加了一些与之并行的其他网站,所有这些网站都运行在不同的端口上。
我想移动这些网站作为默认网站的子应用程序(即:所有运行在端口80上,可到达../SiteA ../SiteB)存在,同时保持其当前configuration。
当前的网站设置:
网站
想要的网站设置:
网站
我可以删除它们并重新创build它们,但我想维护它们的configuration。
编辑:当前设置 –

澄清 – 我已经在IIS中创build了现有的网站,在IIS中configuration – 我不想删除它们,并重新创build它们作为子应用程序从头开始添加到默认网站。 我想知道是否有一种方法可以将现有的应用程序及其configuration从字面上移动(意思是我有MIMEtypes,authentication规则,绑定和其他自定义设置,如果我可以避免的话,我不想重新创build它们) 。
更具体的说,我以为我可以在这里点击并拖动其中一个站点,把它作为一个子应用程序有效地重新定位到“默认网站”。
如果这不是支持的function,那很好,我只是想探讨支持这种事情的可能性。
对于您想要作为子应用程序的每个站点,请右键单击Default Website然后selectAdd Application :

然后将该应用程序指向该站点的现有物理文件夹:

现在,根据您如何保护SiteA , SiteB和SiteC的物理文件夹,您可能需要调整NTFS权限,以允许应用程序池标识为任何应用程序池将承载这些站点。
您可以通过单击应用程序池灰显文本框旁边的Select来重新使用已存在的SiteA , SiteB和SiteC 池 。
关于这个问题的更新:
我以为我可能能够点击并拖动这里的一个网站“默认网站”有效地将其重新定位为一个子应用程序。
不幸的是,IIS MMC没有这个function,这是你需要手动完成的,并且可以在IIS7的applicationHost.config文件中仔细复制,粘贴和调整设置。
哪里可以find您的网站configuration
如果大多数设置是通过使用Mime,默认文档,错误页面等function的IIS MMC UIconfiguration的,那么这些设置将会web.config在<system.webServer>下的站点web.config文件中。 如果是这种情况,那么你不需要做太多的事情。
但是,如果使用appcmd.exe命令行工具或使用IIS MMCconfiguration编辑器functionconfiguration设置,并将提交位置设置为/commit:apphost (或ApplicationHost.config <location path="SiteX" />如果使用configuration编辑器),那么这些设置将直接保存在IIS7的主要configuration文件中,该configuration文件位于:
%SYSTEMROOT%\ SYSTEM32 \ INETSRV \设置\的applicationHost.config
要理解applicationHost.configconfiguration文件的结构,我build议阅读以下内容:
<system.applicationHost>– MS IIS.NET网站
点击右侧面板中的“按模式查看”,将显示设置的层次结构。
网站是在<sites>集合中定义的,其中包含您可能会猜到的<site>元素的集合。 有几个设置是<site>元素的子元素,它们没有任何意义,例如指定了站点IP地址的<bindings>集合,主机头,要监听的端口等。
关于function委派
通过MMC UIconfiguration站点function时,设置的持续方式(无论是保存在本地站点web.config文件中还是存储在applicationHost.config文件中)通常由configuration该设置的function委派的方式来控制。
您可以在IIS7的MMC服务器范围configuration节点的pipe理部分下findfunction委派configuration工具:

当你启动这个function时,你会看到一个(几乎)所有服务器的可configurationfunction列表:

简而言之,任何设置为Read Only的configuration设置都将被locking,只能在applicationHost.config文件中进行configuration/保存。
任何被委托为Read/Write或Configuration Read/Write都将保存在站点或子应用程序的web.config文件中。
需要注意的是,如果您使用站点级别的configuration编辑器更改任何委派的设置( Read/Write ),即:


…并且您指定了ApplicationHost.config <location path="SiteA" />那么无论该function的委派设置如何,该设置都将重新configuration在applicationHost.config文件中。
这有希望解释您可以根据解释function委派规则find您的设置。
复制未委派的function设置
可以在每个站点或应用程序基础上控制的未委派function设置存储在applicationHost.config文件的<location>configuration元素中。 这些行为非常像ASP.NET中的<location>元素。 这是一个使用经典ASP设置的工作示例。
默认情况下,传统的ASP设置不会被委派(委派设置在function委托工具中设置为Read Only 。
SiteA的Classic ASP Debugging Properties -> Send Errors To Browser设置已更改为True (默认值为False ):

应用此设置时,它将存储在applicationHost.config文件中,如下所示:
<location path="SiteA"> <system.webServer> <asp scriptErrorSentToBrowser="true" /> </system.webServer> </location>
您可能需要跳到文件的末尾才能find它。
现在如果你想复制这个设置到一个新的应用程序驻留在另一个网站,即Default Website/SiteA然后复制并粘贴上述设置,只是改变path以匹配确切的层次:
<location path="Default Website/SiteA"> <system.webServer> <asp scriptErrorSentToBrowser="true" /> </system.webServer> </location>
这样做应该适用于99%的情况,如果不知道确切的configuration,就很难推测需要特别关注的1%。
脚注
在使用applicationHost.config文件时,在进行每个更改之前先获取它的副本是个好主意。 一次做一件事,所以你可以回滚,如果你意外的完全摧毁IIS的话:)
如果您在64位环境下工作,那么您需要使用像Notepad2这样具有64位版本的工具来编辑和保存applicationHost.config文件。 执行这些操作时,还需要“以pipe理员身份运行”。