如何使用web.config中的位置path在IIS7中设置默认文档

我有一个多Tennant网站,我正在Win2000上从IIS5迁移到Win Server 2008 64位上的IIS7。

每个tennant都有自己的域名,指向应用服务器的IP地址。

然后,我们在IIS中为每个域名设置一个站点,并将物理path设置为我们的(传统)ASP文件所在的path。

对于每个站点,我想设置一个运行ASP文件的默认文档,并在查询string中传递CompanyID。

例如
www.site1.com会调用Connect.asp?CompanyID = 425
www.site2.com会调用Connect.asp?CompanyID = 426
等等

为了在IIS7上实现这一点,我在ASP文件的根物理path中有一个web.config文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?> <configuration> <location path="www.site1.com"> <system.webServer> <defaultDocument> <files> <add value="Connect.asp?CompanyID=425" /> </files> </defaultDocument> </system.webServer> </location> <!-- a location entry for every other website here... --> <location path="."> <system.webServer> <defaultDocument> <files> <add value="Connect.asp?CompanyID=1" /> </files> </defaultDocument> </system.webServer> </location> </configuration> 

这是行不通的 – 所有的网站都去了CompanyID = 1条目。

有人能指出我在做什么错吗?

我试过设置path属性

  1. 域名
  2. IIS中网站的友好名称

无论如何,这是行不通的。

我在iis论坛上find了这个链接的解决scheme

您可以将configuration放在applicationhost.config中的位置标记中,而不是放在web.config文件中 – 通过从命令行执行如下操作:

%windir%\ system32 \ inetsrv \ appcmd.exe set config“MySite1”-section:system.webServer / defaultDocument – + files。[value ='newdoc.aspx'] -commitpath:apphost

  • MySite1是IIS中站点的友好名称(您在左侧树中看到的站点名称)
  • newdoc.aspx是该网站的默认文档的名称(您可以指定查询string)

所以对于我上面发布的例子,我为我的每个站点运行了这个命令

%windir%\ system32 \ inetsrv \ appcmd.exe set config“MySite1 – http://www.site1.com”-section:system.webServer / defaultDocument – + files。[value ='Connect.asp?CompanyID = 425'] -commitpath: APPHOST

%windir%\ system32 \ inetsrv \ appcmd.exe set config“MySite2 – http://www.site2.com”-section:system.webServer / defaultDocument – + files。[value ='Connect.asp?CompanyID = 426'] -commitpath: APPHOST

当您转到IIS7pipe理程序中的两个站点的默认文档程序时,您将看到为这两个站点设置的不同默认文档。