Zwei ASP.NET-Websites Sharing-Anwendung Dateien, jedoch mit unterschiedlichen web.config

StackOverflow https://stackoverflow.com/questions/1001332

  •  05-07-2019
  •  | 
  •  

Frage

Ist es möglich, virtuelle Verzeichnisse und / oder virtuelle Anwendungen einzurichten zwei Websites mit, dass der gleichen Anwendungscode (aspx Seiten etc.) teilen, aber unterschiedliche web.config-Dateien? Die Seiten und Code auf demselben Server befinden auf dem gleichen IIS ausgeführt wird.

Ich bin mit IIS 6.

War es hilfreich?

Lösung

Die kurze Antwort ist nein, wenn Sie den Code an einem Ort halten wollen. Wahrscheinlich die beste Lösung ist es, die Anwendung eine benutzerdefinierte Konfigurationsdatei lädt auf, was Sie die Website bestimmen zu sein (vermutlich Header Host?).

So etwas wie ConfigurationManager.OpenExeConfiguration nützlich sein.

Ich denke, eine Alternative ist mit einer Konfigurations Konvention zu kommen, wo man alles in der einen Datei und verwenden GetSection (mit irgendeiner Art von App spezifischen Präfix) für die spezifischen Einstellungen zu bekommen, was Sie wollen.

Andere Tipps

Das ist einfach nicht möglich.

Warum ???

Becuase der asp.net Worker-Prozess die Standardkonfigurationsdatei aus dem physischen Ordner gelesen werden, wo die Anwendung physisch aufhält. Virtuelle Verzeichnisse haben nichts mit web.config zu tun. Es wird nur durch Webserver verwendet (IIS) auf ein bestimmtes physisches Verzeichnis als Stamm der Website abzuzubilden.

Danke.

ich ziemlich sicher, habe ich das einmal vor Jahren, um eine andere DB-Verbindungszeichenfolge für jede Instanz einer Website zu haben. Meine Vermutung war, dass es ein virtuelles Verzeichnis für jede Instanz der Website war die nur eine web.config mit Instanz-spezifische Einstellungen enthalten sind in und dann in jedem dieser virtuellen Verzeichnisse eine App war, die den Quellcode verwiesen (die enthalten ein gemeinsames web.config).

So ist der Trick, wenn ich mich richtig erinnere, war, für eine bestimmte Website ein virtuelles Verzeichnis zu haben, die nur ein web.config enthalten. Die Werte in dieser würde durch das virtuelle Verzeichnis der Unter App vererbt werden.

sein sollte, wird die web.config in der virtuellen Anwendung verwendet werden. Wenn das Layout hierarchisch müssen Sie möglicherweise für web.config Vererbung achten

Ich nehme an, Sie Anwendung A, Anwendung B, Anwendung C haben und so weiter, die alle exakt gleich sind, es sei denn sie durch einige Konfigurationseigenschaften unterscheiden sich in ihren web.config-Dateien definiert.

Natürlich ist das möglich - einfachste Weg ist es, das Projekt als Web-Anwendung einzurichten, dann kompiliert, dann diese DLL unter den Anwendungen gemeinsam nutzen. Sie können mit der GAC ist Sie wollen.

Sie können einzelne Websites in IIS einrichten, auf die ein gemeinsames Verzeichnis verweisen (oder ein virtuelles Verzeichnis in jedem verwenden), wo die ganzen Logik sitzt, aber Sie können die app_code Ordner nicht freigeben.

EDIT

RichardOD hat die beste Antwort oben, und ich habe etwas ähnliches vor implementiert. Grundsätzlich stelle ich eine benutzerdefinierte Konfigurationsdatei auf, die Verweise durch die web.config ist (zu App Neustarts zu verhindern, wenn ich Änderungen vornehmen). Diese Datei wird vom Host-Namen zu lesen, und enthält spezifische Eigenschaften auf einer Pro-Host-Basis.

Alles, was ich tun ist, Host-Header zu IIS hinzufügen und ein Eintrag für diesen Host in der benutzerdefinierten Konfigurationsdatei. Fertig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top