我正在寻找有关如何在单个IIS站点中处理多个web.config的建议。我在IIS方面经验不多,但需要弄明白。
背景: 1)我们在IIS 7.5中的单个站点上运行Intranet应用程序 2)我们在各种服务器上都有自定义应用程序代码,我们将iframe插入到我们的Intranet中,并希望在我们的Intranet的URL上进行捎带。 (intranet.com/custom/blah.aspx) 3)为此,我们在IIS Intranet站点中创建了虚拟目录。不幸的是,这似乎导致我们的Intranet的web.config与我们各种自定义应用程序的web.configs之间存在一些继承/冲突。
我最初的想法是,我们可能需要从我们的IIS内部网站点删除我们的自定义应用程序并创建新的IIS站点,但我不确定是否/如何实现这一点,因为我们仍然希望重新使用它们URL。 有什么想法吗?
如果需要进一步的细节/澄清,请告诉我。
答案 0 :(得分:1)
在我看来,您仍然可以继续使用现有设置,即将自定义应用程序作为Intranet应用程序中的虚拟目录。只需要解决web.config中的冲突。有两种方法可以解决这些冲突。
告诉您的Intranet应用程序的web.config不要在子目录上推送其配置。实现此目的的方法是使用位置标记。例如
如果您希望父应用程序不将其连接字符串推送到子目录,请使用以下构造。
<location path="." inheritInChildApplications="false">
<connectionStrings>
</connectionStrings>
</location>
如果您将所有这些冲突的设置包装在location元素中,那么它将不会被推送到子目录。您必须谨慎,因为它将停止继承到Intranet应用程序自己的子目录而不仅仅是虚拟目录。
告诉您的自定义应用程序的web.config不要从父目录继承配置。实现此目的的方法是使用<clear/>
元素。
在自定义应用程序的web.config中,对于所有这些冲突的设置,您首先清除来自父级的设置,然后添加要添加的特定设置。例如
<connectionStrings>
<clear />
<add your specific connection string>
<connectionStrings>