Le fichier configSource 'connections.config' est également utilisé dans un parent, ce n'est pas autorisé.

9

Question:

Je fais face à la situation suivante:

Une application Web ASP.NET .NET 4.0 déployée sur la machine "vmsomething".

L'application Web exécutée sur IIS 7.5 réside dans d: \ webs \ myapplication sur vmsomething.

Les fichiers de configuration de l'application:

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>

Ensuite, on peut accéder à l'application de deux manières:
Première méthode: http://vmsomething.com
Deuxième méthode: http://vmsomething.com/my_application_virtdir
(sans .com, impossible d'ajouter des liens locaux)

Maintenant, je peux très bien ouvrir l'application sur http://vmsomething.com .
Si j'essaie d'ouvrir l'application sur http://vmsomething.com/my_application_virtdir , j'obtiens cette erreur:

Erreur de configuration

Je ne suis pas l'administrateur du serveur et je ne sais pas comment il l'a configuré.
Maintenant à ma question:

  • Qu'est-ce qui cause cette erreur?
  • Comment le réparer ?
Dilemme
la source

Réponses:

9

La raison en est que vous avez deux sites Web ciblés sur le même dossier physique. Et il existe un héritage dans web.config .

http://vmsomethingest le parent et http://vmsomething/my_application_virtdirson enfant. L'enfant web.config hérite de tous les éléments de son parent. Et le web.config n'est généralement pas conçu pour fonctionner dans un tel scénario. Vous pouvez avoir beaucoup de maux de tête lorsque d'autres utilitaires installés à partir de nuget tentent de modifier votre web.config.

Si vous souhaitez accéder à votre site Web à, http://vmsomething/my_application_virtdirje suppose que la solution la plus simple sera de changer le chemin physique pour http://vmsomethingquelque chose de différent.

Si vous souhaitez tester le fonctionnement de votre site Web sans spécifier virtdir, vous pouvez configurer un site Web distinct dans IIS (pas le site Web par défaut) et le cibler sur le même chemin physique. Ensuite, vous pourrez tester les deux modes de déploiement en même temps.

Stanislav
la source