Frage

Ich habe eine Instanz einer Webanwendung, die mit mehreren Datenbanken verbunden ist.Basierend auf dem Domainnamen (zum Beispiel www.shop1.com, www.shop2.com, ..) wechsle ich die Verbindungszeichenfolge im Entity Framework.

shop1.com -> Database1

shop2.com -> Database2

shop3.com -> Database3

So weit, ist es gut.

Ich verwende auch den SQL Server-Sitzungsstatus und möchte die Sitzungsstatusdatenbank genauso wechseln, wie ich die Datenbank für meine Daten wechsle.

shop1.com -> SessionStateDatabase1

shop2.com -> SessionStateDatabase2

shop3.com -> SessionStateDatabase3

Vielen Dank im Voraus für Ihre Hilfe.


Weitere Informationen, wenn Sie wissen möchten, warum ich das mache:

Eigentlich setze ich Mandantenfähigkeit um.Die obige Beschreibung zeigt drei Standorte.Tatsächlich habe ich mehr als 50.Und die Anzahl der Websites wird in den nächsten Monaten wachsen.Im Moment werden alle Standorte separat bereitgestellt, was bedeutet, dass ich jedes Mal, wenn ich einen Patch oder ein Update einführen muss, alle 50 Standorte bereitstelle.Die Pflege von Websites auf diese Weise wird zum Albtraum.Deshalb habe ich darüber nachgedacht, je nach Nutzung 5 bis 10 Websites auf einer Instanz unterzubringen, damit ich weniger Instanzen verwalten muss.

War es hilfreich?

Lösung

In solchen Fällen schaue ich mir immer den Quellcode des Frameworks an.Zuerst finde ich heraus, wo die Konfiguration die Verbindungszeichenfolge für den Sitzungsstatus speichert, und dann finde ich heraus, wo sie verwendet wird.Die Privatklasse System.Web.SessionState.SqlSessionState.SqlSessionStateStore hat eine Methode OneTimeInit(), wo die Verbindungszeichenfolge gelesen wird.Hier ist mir aufgefallen, dass es Unterstützung für Partiniong gibt, siehe hier: http://msdn.microsoft.com/en-us/library/aa478952.aspx .Davon habe ich noch nie gehört, aber es sieht so aus, als würde es genau das tun, was Sie wollen: Sie können den Sitzungsstatus in mehreren Datenbanken speichern, basierend auf beliebigen Kriterien.+1 für die Frage übrigens, das ist eine coole Funktion.Wenn es nicht klappt, können Sie auch versuchen, Ihre eigene SessionStateStoreProviderBase-Implementierung zu implementieren, die öffentlich überschreibbar ist.

Andere Tipps

Da die Verbindung der Sitzungsstatus nicht von Ihrem Code verwaltet wird, ist es nicht möglich, sie zu wechseln.Es ist eine Anwendungsstufe-Konfiguration und die Jenseits der Code-Steuerung.Aber das Bedürfnis darf nicht entstehen.Ein einzelner Server kann den Sitzungsstatus für alle drei Domains verwalten, die Sie haben.Das einzige Sorge, vielleicht, wenn sich ein Benutzer von Shop1.com an Shop2.com bewegt und dennoch die alte Sitzung behält.

Gibt es einen bestimmten Grund, warum Sie nicht in Betracht ziehen würden (ich sei, denselben Code anzunehmen, denselben Code) als drei separate Webanwendungen?

  • Ein Fehler dauert nicht alle drei Standorte
  • Sitzungsstatus wird durch Anwendung getrennt
  • Erlaubt, dass Skalen-Fähigkeitsstellen an verschiedene Systeme zugeordnet werden können, da Wachstum diktiert
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top