Question

J'ai une instance d'application Web connectée à plusieurs bases de données.En fonction du nom de domaine (par exemple www.shop1.com, www.shop2.com, ..), je change la chaîne de connexion dans Entity Framework.

shop1.com -> Database1

shop2.com -> Database2

shop3.com -> Database3

Jusqu'ici, tout va bien.

J'utilise également l'état de session de SQL Server et je souhaite changer de base de données d'état de session, tout comme je change de base de données pour mes données.

shop1.com -> SessionStateDatabase1

shop2.com -> SessionStateDatabase2

shop3.com -> SessionStateDatabase3

Merci d'avance pour votre aide.


Plus d'informations si vous voulez savoir pourquoi je fais ça :

En fait, j'implémente la multi-location.La description ci-dessus montre trois sites.En fait, j'en ai plus de 50.Et le nombre de sites va augmenter dans les prochains mois.Pour le moment, tous les sites sont déployés séparément, ce qui signifie que chaque fois que je dois déployer un correctif ou une mise à jour, je déploie les 50 sites.Entretenir les sites de cette manière devient un cauchemar.Je pensais donc mettre 5 à 10 sites sur une seule instance, en fonction de leur utilisation, afin d'avoir moins d'instances à maintenir.

Était-ce utile?

La solution

Dans des cas comme celui-ci, je regarde toujours le code source du framework.Je découvre d’abord où la configuration stocke la chaîne de connexion de l’état de session, puis je trouve où elle est utilisée.Le cours privé System.Web.SessionState.SqlSessionState.SqlSessionStateStore a une méthode OneTimeInit(), où il lit la chaîne de connexion.Ici, j'ai remarqué qu'il existe un support pour la participation, voir ici : http://msdn.microsoft.com/en-us/library/aa478952.aspx .Je n'en ai jamais entendu parler auparavant, mais il semble que cela fasse exactement ce que vous voulez, vous pouvez stocker l'état de la session dans plusieurs bases de données, en fonction de tous les types de critères souhaités.+1 pour la question au fait, c'est une fonctionnalité intéressante.De plus, si cela ne fonctionne pas, vous pouvez essayer d'implémenter votre propre implémentation SessionStateStoreProviderBase, qui est publiquement modifiable.

Autres conseils

Étant donné que la connexion d'état de session n'est pas gérée par votre code, il ne vous sera pas possible de le changer.C'est une configuration de niveau d'application et le contrôle de code au-delà.Mais la nécessité de cela ne devrait pas survenir.Un seul serveur sera en mesure de gérer l'état de la session pour les trois domaines que vous avez.La seule préoccupation peut-être que lorsqu'un utilisateur passe de shop1.com à shopping.fr et conserve toujours l'ancienne session.

y a-t-il une raison pour laquelle vous ne voudriez pas continuer à courir (je suppose, le même code) que trois applications Web distinctes?

  • Une erreur ne diminue pas les trois sites
  • L'état de la session
  • est séparé par application
  • permet aux sites de capacité d'échelle peut être attribué à différents systèmes, car la croissance dicte
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top