2014-04-29 18 views
6

Ich erstelle eine Testversion einer vorhandenen Produktionsstätte. Eine virtuelle Web-Service-Anwendung existiert innerhalb der Site - und die beiden Web-Konfigurationen haben die gleiche Verbindungszeichenfolge."Eintrag wurde bereits hinzugefügt" - Zwei separate App-Pools

Es gibt keine "clear" -Tags in den Produktions-Web-Konfigurationen und die Website und der Web-Service existieren munter in zwei separaten App-Pools.

Auf der Testseite erhalte ich jedoch jedes Mal, wenn ich die Webservice-URL anwähle, den Konfigurationsfehler "Der Eintrag 'ConnectionString' wurde bereits hinzugefügt."

Die Testwebsite und die entsprechende virtuelle Anwendung verwenden ihre eigenen separaten App-Pools. Irgendwelche Ideen?

Dank Jim

Antwort

12

Web.config Vererbung passiert sogar zwischen verschiedenen appPools. Wenn Sie dieses Verhalten beenden möchten, sollten Sie das Attribut enableConfigurationOverride="false" zu Ihrem appPool in der Datei applicationHost.config (in% WINDIR% \ System32 \ inetsrv \ Config und% WINDIR% \ SysWOW64 \ inetsrv \ config) hinzufügen, wie in der folgendes Beispiel:

<add name="MyAppPool" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" enableConfigurationOverride="false"> 
    <processModel identityType="NetworkService" /> 
</add> 

Matteo

+1

Dies funktioniert nicht auf IIS7.5 (Ich gehe davon aus, dass ich dieses Attribut auf dem AppPool der untergeordneten App hinzufügen sollte) – HaBo

+0

Ich kann mich nicht erinnern und momentan habe ich diese Umgebung nicht mehr, trotzdem würde ich versuchen, sie hinzuzufügen Der Eltern-AppPool (oder beide) –

+0

Arbeitete gut für mich, hinzugefügt auf dem Kind-App-Pool. Vielen Dank! – RobSiklos

1

ich glaube, das Problem zusammenhängt, dass sie eine Stelle in der anderen sind. Wie eine Website mit einem virtuellen Verzeichnis darin.

In diesem Fall ... das virtuelle Verzeichnis web.config wird "erben" die Eltern web.config

Hier können Sie Details sehen, wie dieses Problem zu lösen: How to stop inheritance of <configSections>in Web.Config

Weitere Optionen: https://stackoverflow.com/a/367372/7720

Wenn das Problem in anderen Teilen Ihrer web.config (nicht in den Abschnitten) auftritt, können Sie den Konfliktpart einfach mit <location path="." inheritInChildApplications="false"> umbrechen.

Andere Option könnte der Webservice die Verbindung von der Website greifen lassen.

+0

Danke - aber gilt dies, wenn die virtuelle Anwendung in einem anderen Anwendungspool ausgeführt wird? (Konfiguriert auf der Ordnerebene von IIS) – Spodgy

+0

Nicht wirklich sicher ... In meinem Fall denke ich, ich habe verschiedene App-Pools in Eltern und Kind, aber wie es Shared Hosting ist nicht leicht zu wissen. – Romias

+0

OK .. Danke. Ich habe mich dafür entschieden, die Verbindungszeichenfolge zu ändern. – Spodgy