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

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

我有一个多租户网站,正在将其从 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 条目。

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

我尝试将路径属性设置为

  1. 域名
  2. 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个站点设置了不同的默认文档。

相关内容