我想知道以下是否可以完成,无论是否可以完成,获取尽可能多的反馈,以便我可以找到开始的方法。
我想在 IIS 中创建一个网站。这个网站我希望有 2 个绑定:
test1.company.com
test2.company.com
但是,当用户访问网站时,我希望 test1.company.com 使用表单身份验证,而 test2.company.com 使用 Windows 身份验证。
简而言之,这就是我想要实现的目标。到目前为止,我尝试过的事情是:
创建 2 个独立网站 (test1.company.com 和 test2.company.com),并在基本设置中让两个网站指向相同的物理路径。但是,我认为这行不通,因为当我更改一个网站上的身份验证时,它也会将其应用于另一个网站,反之亦然,因为我猜它们都使用相同的物理路径。
再次创建 2 个独立的网站,但在基本设置中,两个网站都有自己的文件夹/物理路径。但是,每个网站的文件夹完全相同。这可行,但是网站将被编辑(文件将被添加/更改到根文件夹),因此,如果有意义的话,网站上添加/更改的任何内容都需要在另一个网站上完全相同地完成。这会带来不便,我不想走这条路。
所以最后,我只是想得到一些反馈,看看我的想法是否能实现。如果需要更多细节,我可以解释。任何帮助都将不胜感激。
身份验证 iis 绑定
答案1
您可以选择选项 1,即两个指向相同物理路径的独立站点。当您为第一个站点设置表单身份验证时,您将获得一个包含以下内容的 web.config:
<configuration>
<system.web>
<authentication mode="Forms" />
</system.web>
</configuration>
如果您在第二个站点上选择 Windows 身份验证,您将获得:
<configuration>
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</configuration>
现在,单个 web.config 文件中存在冲突。要解决此问题,请将两个节点从 web.config 文件移出,移至全局 IIS 配置文件中。
打开:
C:\Windows\System32\inetsrv\Config\applicationHost.config
以提升的管理员身份在文本编辑器中,在底部添加如下内容:
<location path="test1.company.com">
<system.web>
<authentication mode="Forms" />
</system.web>
</location>
<location path="test2.company.com">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</location>
位置节点中的名称与您在 IIS 管理器中看到的站点名称相同。您可能已经在 中有其他位置节点applicationHost.config
,否则请直接将它们放在configuration
节点下。
两个站点之间共享的任何其他配置都可以保留在 web.config 中。
位置节点中的路径不仅限于站点名称,还可以有目录或文件,以将设置应用到站点的特定部分。