如果您是在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>
您可以在开发中进行良好测试,并且可以顺利在生产IIS下的虚拟路径中运行您的站点。
一切都运作良好。
但是当您在VS2015中打开解决方案时。
由于VS2015不再提供&#34; ASP.NET开发服务器&#34;。
您必须使用IISEXPRESS来开发和测试您的网站。
但是当你使用IISEXPRESS,并制作&#34;项目URL&#34; as&#34; http://localhost:12345/myvirpath&#34;在Web项目属性中。
按&#34; F5&#34;,您将收到错误讯息:
configSource文件&#39; mycustom.config&#39;也用于父母,这是不允许的。
原因是IISEXPRESS将创建2个站点,&#34; http://localhost:12345/&#34;和&#34; http://localhost:12345/myvirpath&#34;
两个站点都将指向相同的物理路径,这是不允许的。
因此会出现错误信息。
我已经搜索了这个问题很多天了,我找到了解决这个问题的最终方法,并在这里分享。
解决方案是:
在VS2015中打开您的解决方案。
使项目网址为&#34; http://localhost:12345/myvirpath&#34;在您的网站项目属性中。
&#34;覆盖应用程序根URL&#34;的复选框;是不必要的。
在以下位置打开您的IISEXPRESS配置:&#34; $(solutionDir).vs \ config \ applicationhost.config&#34;, 在&lt; sites&gt;中你会发现两条路径&#34; /&#34;和&#34; / myvirpath&#34;正在使用相同的物理路径。
<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>
现在更改&#34; /&#34;的物理路径到这样的另一条道路:
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
</application>
保存。现在你可以使用&#34; F5&#34;执行您的Web项目时不再出现错误消息。