Файл configSource 'mycustom.config' также используется в родительском файле, это запрещено

Если вы были разработаны ASP.NET веб-сайт в VS2010. (или до VS2015)

И ваш сайт использует виртуальный путь, например " http://localhost:12345/myvirpath"

И у вас есть файл конфигурации для настройки с помощью configSource в Web.config, например:

<configuration>
    <configSections>
        <section name="MyConfig" type="mydomain.MyConfig_Model, mydomain" />
    </configSections>
    <ConfigRoot configSource="mycustom.config" />
    ...
</configuration>

Вы можете хорошо тестировать в разработке, и вы можете без проблем запустить свой сайт по виртуальному пути в Production IIS.

Все работает хорошо


Но когда вы откроете свое решение в VS2015.

Поскольку VS2015 больше не предоставляют "ASP.NET Development Server".

Вы должны использовать IISEXPRESS для разработки и тестирования вашего веб-сайта.

Но когда вы используете IISEXPRESS и задаете "URL проекта" как " http://localhost:12345/myvirpath" в свойствах веб-проекта.

Нажмите "F5", вы получите сообщение об ошибке:

Файл configSource 'mycustom.config' также используется в родительском файле, это запрещено.


Причина в том, что IISEXPRESS создаст 2 сайта: " http://localhost:12345/" и " http://localhost:12345/myvirpath"

Оба сайта будут указывать на один и тот же физический путь, и это запрещено.

Так что там будет это сообщение об ошибке.


Я гуглил эту проблему много дней, и у меня есть последний способ решить эту проблему и поделиться ею здесь.

Решение:

  1. Откройте ваше решение в VS2015.

  2. Сделайте URL проекта " http://localhost:12345/myvirpath" в свойствах вашего веб-проекта.

  3. Флажок "Переопределить корневой URL-адрес приложения" не требуется.

  4. Откройте конфигурацию 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>
    
  5. Теперь измените физический путь "/" на другой путь, например:

    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
    </application>
    
  6. Сохрани это. И теперь вы можете использовать "F5" для выполнения вашего веб-проекта без сообщения об ошибке.

0 ответов

Другие вопросы по тегам