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


9

Вопрос:

Я сталкиваюсь со следующей ситуацией:

Веб-приложение ASP.NET .NET 4.0, развернутое на компьютере "vmsomething".

Веб-приложение, работающее на IIS 7.5, находится в d: \ webs \ myapplication на vmsomething.

Конфигурационные файлы приложения:

connections.config

<?xml version="1.0"?>
<connectionStrings>
  <remove name="server"/>
  <add name="server" connectionString="Data Source=OUR_DB_Server;Initial Catalog=MY_INITIAL_CATALOG;Persist Security Info=False;User Id=OUR_DB_User;Password=OUR_TOP_SECRET_PASSWORD;MultipleActiveResultSets=False;Packet Size=4096;Application Name=&quot;MyApplication&quot;" providerName="System.Data.SqlClient"/>
</connectionStrings>

web.config:

<?xml version="1.0"?>
<configuration>

  <connectionStrings configSource="connections.config"/>

  <system.web>
    <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/>
    <compilation strict="true" explicit="true">
      <assemblies>
        <add assembly="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="Microsoft.JScript, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
      </assemblies>
    </compilation>
    <authentication mode="Windows"/>
    <pages>
      <namespaces>
        <clear/>
        <add namespace="System"/>
      </namespaces>
    </pages>
    <customErrors mode="Off">
      <error statusCode="404" redirect="~/w8/index.html"/>
    </customErrors>
    <globalization uiCulture="de" culture="de-CH" requestEncoding="UTF-8" responseEncoding="UTF-8"/>
    <httpRuntime maxRequestLength="2048000" executionTimeout="86400"/>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
  </system.webServer>
</configuration>

Затем можно получить доступ к приложению двумя способами:
Метод первый: http://vmsomething.com
Метод второй: http://vmsomething.com/my_application_virtdir
(без .com, не могу добавить локальные ссылки)

Теперь я могу открыть приложение на http://vmsomething.com просто отлично.
Если я пытаюсь открыть приложение на http://vmsomething.com/my_application_virtdir , я получаю эту ошибку:

Ошибка конфигурации

Я не являюсь администратором сервера, и я не знаю, как он это настроил.
Теперь на мой вопрос:

  • Что вызывает эту ошибку?
  • Как это исправить?

Ответы:


9

Причина в том, что у вас есть два веб-сайта, ориентированные на одну и ту же физическую папку. И существует наследование в web.config .

http://vmsomethingявляется родителем и http://vmsomething/my_application_virtdirявляется его ребенком. Дочерний web.config наследует все элементы от своего родителя. И web.config обычно не предназначен для работы в таком сценарии. Вы можете получить много головной боли, когда другие утилиты, установленные из nuget, попытаются изменить ваш web.config.

Если вы хотите получить доступ к своему веб-сайту в http://vmsomething/my_application_virtdirто время, я думаю, что самым простым решением будет изменить физический путь на http://vmsomethingчто-то другое.

Если вы хотите проверить, как работает ваш веб-сайт без указания virtdir, вы можете настроить отдельный веб-сайт в IIS (не веб-сайт по умолчанию) и настроить его на тот же физический путь. Тогда вы сможете протестировать оба способа развертывания одновременно.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.