configSource 文件 'mycustom.config' 也用于父级,这是不允许的

Chi*_*nor 6 asp.net visual-studio-2010 virtual-directory configsource visual-studio-2015

如果您是在 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>
Run Code Online (Sandbox Code Playgroud)

您可以在开发中很好地进行测试,并且可以在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

两个站点将指向相同的物理路径,这是不允许的。

所以会有那个错误信息。


我在谷歌上搜索了这个问题很多天,我找到了解决这个问题的最终方法,在这里分享一下。

解决办法是:

  1. 在 VS2015 中打开您的解决方案。

  2. 在您的 Web 项目属性中使项目 URL 为“ http://localhost:12345/myvirpath ”。

  3. “覆盖应用程序根 URL”复选框是不必要的。

  4. 打开您的 IISEXPRESS 配置:“$(solutionDir).vs\config\applicationhost.config”,在 <sites> 部分,您会发现路径“/”和“/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>
    
    Run Code Online (Sandbox Code Playgroud)
  5. 现在将“/”的物理路径更改为另一个路径,如下所示:

    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
    </application>
    
    Run Code Online (Sandbox Code Playgroud)
  6. 保存。现在您可以使用“F5”来执行您的 Web 项目,而不会再有任何错误消息。