Pregunta

Tengo una instancia de la aplicación web conectada a múltiples bases de datos. Basado en el nombre de dominio (por ejemplo, www.shop1.com, www.shop2.com, ..) Cambio la cadena de conexión en el marco de la entidad.

shop1.com -> Database1

shop2.com -> Database2

shop3.com -> Database3

tan bueno.

También estoy usando el estado de la sesión de SQL Server y quiero cambiar la base de datos del estado de la sesión al igual que soy la base de datos de conmutación de mis datos.

shop1.com -> SessionStateDatabase1

shop2.com -> SessionStateDatabase2

shop3.com -> SessionStateDatabase3

Gracias de antemano por su ayuda.


Más información Si desea saber por qué estoy haciendo esto:

En realidad estoy implementando multi-tenencia. La descripción anterior muestra tres sitios. De hecho, tengo más de 50. Y el número de sitios va a crecer en los próximos meses. En este momento, todos los sitios se despliegan por separado, lo que significa cada vez que tengo que desplegar un parche o una actualización. Implementaré los 50 sitios. Mantener los sitios de esta manera se está convirtiendo en una pesadilla. Así que estaba pensando en poner de 5 a 10 sitios en una instancia, dependiendo de su uso, para que tenga menos instancias para mantener.

¿Fue útil?

Solución

En casos como este, siempre observo el código fuente del marco.Primero, averigua dónde se encuentra la configuración de la configuración de la sesión de la sesión, luego encuentro dónde se está utilizando.La clase privada System.Web.SessionState.SqlSessionState.SqlSessionStateStore tiene un método OneTimeInit(), donde lee la cadena de conexión.Aquí noté que hay soporte para Partiniong, consulte aquí: http:// msdn.microsoft.com/en-us/library/aa478952.aspx .Nunca he oído hablar de esto antes, pero parece que hace exactamente lo que desea, puede almacenar el estado de la sesión en múltiples bases de datos, en función de cualquier tipo de criterios que desee.+1 Para la pregunta por cierto, esta es una característica genial.Además, si no funciona, podría intentar implementar su propia implementación de SessionStAstoreProViderBase, que es pública en exceso.

Otros consejos

Dado que la conexión del estado de la sesión no está administrada por su código, no será posible que lo cambie.Su configuración de nivel de aplicación y el control de código más allá.Pero la necesidad de esto no debería surgir.Un solo servidor podrá administrar el estado de la sesión para los tres dominios que tiene.La única preocupación quizás cuando un usuario se mueve desde shop1.com a shop2.com y aún conserva la antigua sesión.

¿Hay alguna razón por la que no consideraría correr (asumo, el mismo código) que tres aplicaciones web separadas?

  • Un error no reduce los tres sitios
  • El estado de la sesión
  • está separado por la solicitud
  • Permite los sitios de habilidades de escala se pueden asignar a diferentes sistemas a medida que el crecimiento dicta
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top