El archivo configSource 'connections.config' también se usa en un padre, esto no está permitido.

9

Pregunta:

Me enfrento a la siguiente situación:

Una aplicación web ASP.NET .NET 4.0 implementada en la máquina "vmsomething".

La aplicación web que se ejecuta en IIS 7.5 reside en d: \ webs \ myapplication en vmsomething.

Los archivos de configuración de la aplicación:

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>

Luego, se puede acceder a la aplicación de dos maneras:
Método uno: http://vmsomething.com
Método dos: http://vmsomething.com/my_application_virtdir
(sin .com, no se pueden agregar enlaces locales)

Ahora puedo abrir la aplicación en http://vmsomething.com muy bien.
Si intento abrir la aplicación en http://vmsomething.com/my_application_virtdir , aparece este error:

Error de configuración

No soy el administrador del servidor, y no sé cómo lo configuró.
Ahora a mi pregunta:

  • ¿Qué causa este error?
  • Como arreglarlo ?
Dilema
fuente

Respuestas:

9

La razón es que tiene dos sitios web dirigidos a la misma carpeta física. Y existe una herencia en web.config .

http://vmsomethinges el padre y http://vmsomething/my_application_virtdires su hijo. El elemento web.config hereda todos los elementos de su elemento primario. Y el web.config generalmente no está diseñado para funcionar en ese escenario. Puede tener muchos dolores de cabeza cuando otras utilidades instaladas desde nuget intenten modificar su web.config.

Si desea acceder a su sitio web en http://vmsomething/my_application_virtdir, supongo que la solución más fácil será cambiar la ruta física http://vmsomethinga algo diferente.

Si desea probar cómo funciona su sitio web sin especificar virtdir, puede configurar un sitio web separado en IIS (no el sitio web predeterminado) y orientarlo a la misma ruta física. Entonces podrá probar ambas formas de implementación al mismo tiempo.

Stanislav
fuente