2009-03-27 3 views
2

Ist es möglich, eine IIS-Site zum Lesen von ASP.Net-Einstellungen von einer anderen Site als web.config zu konfigurieren?Wie können Sie den Namen der Datei web.config ändern und IIS von der neu benannten Datei lesen lassen?

Wir hätten gern drei Konfigurationsdateien in unserer Codebasis - web-dev.config, web-test.config und web-prod.config. Jede IIS-Instanz würde so konfiguriert werden, dass sie von ihrer spezifischen Datei liest. Auf diese Weise steuern wir sie alle nebeneinander (und mit einem Klick stellen Sie die gesamte Site bereit), wissen aber, dass jede IIS-Instanz die für sie spezifischen Einstellungen liest.

Ich habe in IIS gefunden, wo es zeigt, wo die web.config ist, aber ich kann nicht sehen, wie Sie den Speicherort ändern.

Antwort

1

Die beste Lösung im Moment ist die Verwendung verschiedener Konfigurationen für Entwicklung und Produktion. Dies wird sich jedoch mit .net 4 und VS 2010 ändern, denen Web.Debug.config, Web.Release.config, Web.Staging.config und Web.Testing.config hinzugefügt wurden, die dann die Konfiguration veröffentlichen, die Sie in Bezug auf die Umgebung.

0

In meinem Unternehmen haben wir nur unser Implementierungstool, um die entsprechende Datei in web.config zu kopieren, je nachdem, welche Art von Bereitstellung wir durchführen.

0

Ich glaube, es muss web.config benannt werden.

Sie stehen vor einem gemeinsamen Problem.

Eine Lösung, die ich verwendet habe, die in einer großen Organisation wirklich gut funktionierte, war das Setzen von Umgebungsvariablen auf den Webservern. Wie DEV, QA, UAT, PROD. Anschließend können Sie im Code die Umgebungsvariable abfragen, um zu sehen, auf welcher Maschine Sie sich befinden, und dann die Werte von appSettings entsprechend auswählen. Sie könnten beispielsweise eine Datenbankverbindungszeichenfolge mit dem Namen DEVconnection und eine andere mit dem Namen UATconnection haben. Wenn Ihr Code aus der Umgebungsvariablen ermittelt, in der Sie sich in UAT befinden, würde UATconnection verwendet.

Dies setzt voraus, dass Sie Umgebungsvariablen auf dem Webserver festlegen können. In diesem Fall waren die Administratoren, die die Server betrieben, diejenigen, die diese Lösung vorgeschlagen haben.

Was war süß daran war, dass es immer nur eine Version von web.config gab.

+0

Ihr Plan ist eine gute, und das wir zuvor gedacht haben. Wir verwenden jedoch mehrere kommerzielle Komponenten, die für bestimmte appSettings-Schlüssel fest codiert sind und die wir nicht ändern können. – Deane

+0

Aaargh! Ich fühle deinen Schmerz. – DOK

+1

Ich glaube nicht, dass diese Antwort es verdient hat, abgelehnt zu werden. Es ist eine gute Lösung, die häufig verwendet wird. –

4

Ich verwende die ConfigSource-Eigenschaft, um eine externe Konfigurationsdatei für Abschnitte anzugeben, die unterschiedliche Werte für Entwicklung und Produktion benötigen.

<connectionStrings configSource="Config\ConnDev.config"/> 

Dann müssen Sie nur eine Einstellung (manuell oder mit einem Werkzeug) ändern, um von Dev zu Produktionskonfigurationen zu wechseln.