Die configSource-Datei 'connection.config' wird auch in einem übergeordneten Element verwendet. Dies ist nicht zulässig.

9

Frage:

Ich stehe vor folgender Situation:

Eine ASP.NET .NET 4.0-Webanwendung, die auf dem Computer "vmsomething" bereitgestellt wird.

Die unter IIS 7.5 ausgeführte Webanwendung befindet sich in d: \ webs \ myapplication auf vmsomething.

Die Konfigurationsdateien der Anwendung:

verbindungen.konfig

<?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>

Dann kann man auf zwei Arten auf die Anwendung zugreifen:
Methode Eins: http://vmsomething.com
Methode Zwei: http://vmsomething.com/my_application_virtdir
(ohne .com können keine lokalen Links hinzugefügt werden)

Jetzt kann ich die Anwendung auf http://vmsomething.com ganz gut öffnen .
Wenn ich versuche, die Anwendung unter http://vmsomething.com/my_application_virtdir zu öffnen , wird folgende Fehlermeldung angezeigt:

Konfigurationsfehler

Ich bin nicht der Administrator des Servers und ich weiß nicht, wie er ihn konfiguriert hat.
Nun zu meiner Frage:

  • Was verursacht diesen Fehler?
  • Wie man es repariert ?
Dilemma
quelle

Antworten:

9

Der Grund dafür ist, dass Sie zwei Websites haben, die auf denselben physischen Ordner ausgerichtet sind. Und es gibt eine Vererbung in web.config .

http://vmsomethingist der Elternteil und http://vmsomething/my_application_virtdirist sein Kind. Die untergeordnete web.config erbt alle Elemente von ihrer übergeordneten. Und die web.config ist normalerweise nicht dafür ausgelegt, in einem solchen Szenario zu funktionieren. Sie können viele Kopfschmerzen bekommen, wenn andere von nuget installierte Dienstprogramme versuchen, Ihre web.config zu ändern.

Wenn Sie auf Ihre Website zugreifen möchten, ist es http://vmsomething/my_application_virtdirwahrscheinlich die einfachste Lösung, den physischen Pfad http://vmsomethingauf etwas anderes zu ändern .

Wenn Sie testen möchten, wie Ihre Website funktioniert, ohne virtdir anzugeben, können Sie eine separate Website in IIS (nicht Standardwebsite) konfigurieren und auf denselben physischen Pfad ausrichten. Anschließend können Sie beide Bereitstellungsarten gleichzeitig testen.

Stanislav
quelle