Bei Verbindungszeichenfolgen ist es tatsächlich möglich, auf eine gemeinsam genutzte Datei zu verweisen. Wenn sich die freigegebene Datei in einem Netzwerk-UNC befindet, sind Administratorrechte auf dem Computer erforderlich, auf dem die App gehostet wird.
Lösung: Verwenden Sie in Ihrer web.config configSource, um auf eine lokale Konfigurationsdatei zu verweisen. Aufgrund von .Net-Einschränkungen muss dies auf oder unter der Ebene der Root-Konfigurationsdatei liegen. Ich zeige nur auf eine Datei im App-Ordner selbst:
<connectionStrings configSource="ConnectionStrings.config" />
Fügen Sie an einem freigegebenen Speicherort, auf den der Benutzer des Anwendungspools zugreifen kann, die Konfigurationsdatei mit freigegebenen Verbindungszeichenfolgen hinzu. Diese Datei darf keine andere XML-Datei als den Abschnitt connectionStrings selbst enthalten. Die freigegebene Datei ConnectionStrings.config sieht folgendermaßen aus:
<connectionStrings>
<clear/>
<add name="connString1" connectionString="connString1 info goes here"/>
<add name="connString2" connectionString="connString2 info goes here"/>
</connectionStrings>
Nun der Trick. Erstellen Sie in Ihrem App-Ordner einen symbolischen Windows-Link, der auf die externe, freigegebene Konfigurationsdatei verweist. Dazu benötigen Sie Administratorrechte:
mklink ConnectionStrings.config \\someServer\someShare\someFolder\ConnectionStrings.config
Wir haben gerade .Net überlistet. Das Konfigurationssystem verwendet die Einstellung configSource, um Verbindungszeichenfolgen in einer lokalen Datei mit dem Namen ConnectionStrings.config zu finden. Die symbolische Verknüpfung sieht für .Net wie eine Datei aus, und die symbolische Verknüpfung wird in die freigegebene Konfigurationsdatei aufgelöst.
Vorsichtsmaßnahmen: Änderungen an der freigegebenen Datei lösen nicht automatisch einen Neustart der App in .Net aus. Bei IIS muss die Website oder der App-Pool manuell neu gestartet werden.
Aufgrund der Notwendigkeit von Administratorrechten zum Erstellen der symbolischen Verknüpfung funktioniert dieser Ansatz möglicherweise nicht für alle. Es gibt zwei verwandte Alternativen, die möglicherweise funktionieren, wenn sich die freigegebene Datei auf demselben logischen Laufwerk befindet - Hardlinks und Junctions. Weitere Informationen finden Sie in dieser Diskussion und in dieser Diskussion .