如果你是在 VS2010 中开发的 ASP.NET 网站。(或在 VS2015 之前)
并且您的站点正在使用虚拟路径,例如“ http://localhost:12345/myvirpath ”
您可以通过在 Web.config 中使用 configSource 来自定义配置文件,如下所示:
<configuration>
<configSections>
<section name="MyConfig" type="mydomain.MyConfig_Model, mydomain" />
</configSections>
<ConfigRoot configSource="mycustom.config" />
...
</configuration>
您可以在开发中很好地测试,您可以在Production IIS下的虚拟路径中顺利运行您的站点。
一切正常。
但是当你在 VS2015 中打开你的解决方案时。
由于VS2015不再提供“ASP.NET开发服务器”。
您必须使用 IISEXPRESS 来开发和测试您的网站。
但是,当您使用 IISEXPRESS,并在 Web 项目属性中将“项目 URL”设置为“ http://localhost:12345/myvirpath ”。
按“F5”,您将收到错误消息:
configSource 文件“mycustom.config”也用于父级,这是不允许的。
原因是 IISEXPRESS 将创建 2 个站点,“ http://localhost:12345/ ”和“ http://localhost:12345/myvirpath ”
两个站点将指向相同的物理路径,这是不允许的。
所以会有那个错误信息。
我已经用谷歌搜索了这个问题很多天,我找到了解决这个问题的最终方法,并在这里分享。
解决方案是:
在 VS2015 中打开您的解决方案。
在您的 Web 项目属性中将项目 URL 设为“ http://localhost:12345/myvirpath ”。
“覆盖应用程序根 URL”复选框是不必要的。
在 <sites> 部分打开 IISEXPRESS 配置:“$(solutionDir).vs\config\applicationhost.config”,您会发现路径“/”和“/myvirpath”都使用相同的物理路径。
<site name="MyWeb.Web-Site" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="D:\MyWeb\MyWeb.Web" /> </application> <application path="/myvirpath" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="D:\MyWeb\MyWeb.Web" /> </application> <bindings> <binding protocol="http" bindingInformation="*:55923:localhost" /> </bindings> </site>
现在将“/”的物理路径更改为另一个路径,如下所示:
<application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" /> </application>
保存。现在您可以使用“F5”来执行您的 Web 项目,而不会再出现错误消息。