Il file configSource 'connections.config' è anche usato in un genitore, questo non è permesso.


9

Domanda:

Devo affrontare la seguente situazione:

Un'applicazione web ASP.NET .NET 4.0 distribuita sulla macchina "vmsomething".

L'applicazione Web in esecuzione su IIS 7.5 risiede in d: \ webs \ myapplication su vmsomething.

I file di configurazione dell'applicazione:

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>

Quindi si può accedere all'applicazione in due modi:
Metodo uno: http://vmsomething.com
Metodo due: http://vmsomething.com/my_application_virtdir
(senza .com, non è possibile aggiungere collegamenti locali)

Ora posso aprire l'applicazione su http://vmsomething.com bene.
Se provo ad aprire l'applicazione su http://vmsomething.com/my_application_virtdir , ottengo questo errore:

Errore di configurazione

Non sono l'amministratore del server e non so come l'abbia configurato.
Ora alla mia domanda:

  • Cosa causa questo errore?
  • Come sistemarlo ?

Risposte:


9

Il motivo è che hai due siti Web targetizzati nella stessa cartella fisica. E esiste un'eredità in web.config .

http://vmsomethingè il genitore ed http://vmsomething/my_application_virtdirè suo figlio. Web.config figlio eredita tutti gli elementi dal suo genitore. E web.config di solito non è progettato per funzionare in questo scenario. Puoi avere molti mal di testa quando altre utility installate da Nuget proveranno a modificare web.config.

Se vuoi accedere al tuo sito web http://vmsomething/my_application_virtdirallora credo che la soluzione più semplice sarà quella di cambiare il percorso fisico per http://vmsomethingqualcosa di diverso.

Se si desidera verificare il funzionamento del sito Web senza specificare virtdir, è possibile configurare un sito Web separato in IIS (non sito Web predefinito) e indirizzarlo allo stesso percorso fisico. Quindi sarai in grado di testare entrambi i modi di distribuzione contemporaneamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.