我有一个多租户网站,正在将其从 Win 2000 上的 IIS5 迁移到 Win Server 2008 64 位上的 IIS7。
每个租户都有自己的域名,指向应用服务器的 IP 地址。
然后我们在 IIS 中为每个域名建立一个站点,并将物理路径设置为我们的(经典)ASP 文件所在的路径。
对于每个站点,我想要设置一个默认文档,该文档运行一个 ASP 文件并在查询字符串中传递 CompanyID。
例如
www.site1.com 将调用 Connect.asp?CompanyID=425
www.site2.com 将调用 Connect.asp?CompanyID=426
等等
为了在 IIS7 上实现这一点,我在 ASP 文件的根物理路径中有一个 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 条目。
有人能指出我做错什么吗?
我尝试将路径属性设置为
- 域名
- IIS 中站点的友好名称
无论哪种方式都不起作用。
答案1
我找到了解决方案在 iis 论坛上的这个链接
您可以将配置放在 applicationhost.config 中的位置标记中,而不是放在 web.config 文件中 - 通过从命令行执行如下操作:
%windir%\ system32 \ inetsrv \ appcmd.exe 设置配置“ MySite1” -section:system.webServer / defaultDocument - + files。[value ='newdoc.aspx'] -commitpath:apphost
- MySite1 是 IIS 中站点的友好名称(您在左侧树中看到的站点名称)
- newdoc.aspx 是该网站的默认文档的名称(您可以指定查询字符串)
因此,对于我上面发布的示例,我对每个站点都运行了此命令
%windir%\system32\inetsrv\appcmd.exe 设置配置“MySite1 - www.site1.com”-section:system.webServer/defaultDocument -+files。[value='Connect.asp?CompanyID=425'] -commitpath:apphost
和
%windir%\system32\inetsrv\appcmd.exe 设置配置“MySite2 - www.site2.com”-section:system.webServer/defaultDocument -+files。[value='Connect.asp?CompanyID=426'] -commitpath:apphost
当你在IIS7管理程序中进入到2个站点的默认文档程序时,你会看到为2个站点设置了不同的默认文档。