ASP.NET: Múltiples objetos de sesión en una sola aplicación

Tengo una aplicación web ASP.NET que se ejecuta en la raíz del servidor web que proporciona varios sitios web (similares) mediante el uso de la redirección de URL. Para dar un ejemplo del mundo real:

http://webshopserver/company1/ProductList.aspx -> http://webshopserver/ProductList.aspx?showProductsFrom=company1
http://webshopserver/company2/ProductList.aspx -> http://webshopserver/ProductList.aspx?showProductsFrom=company2
...

Esto funciona muy bien; El único problema es que, obviamente, todas estas tiendas diferentes comparten el mismo objeto de sesión (ya que el administrador de sesión de InProc almacena el objeto de sesión en el dominio de aplicación). Me gustaría que las tiendas de la compañía1 y la compañía2 tengan diferentes objetos de sesión, de modo que, por ejemplo, si un usuario abre las tiendas de la compañía1 y la compañía2 en diferentes pestañas de la misma ventana del navegador, los artículos colocados en el carrito de compras de la compañía1 ganaron No aparezcas en el carrito de la empresa2.

Hay algunos enfoques obvios para resolver este problema que no me gustan:

Cree mi propio objeto Session que encapsula todo en un HashMap <CompanyName, lo que sea> y luego lo almacena en la sesión "real": Eso rompe todo el código existente que usa el objeto de sesión.Utilice URL comohttp: //company1.webshopserver y un registro DNS comodín, porque la cookie de ID de sesión está vinculada al dominio: Eso es feo (porque el equivalente en el mundo real de "webshopserver" ya es lo suficientemente largo).Escriba mi propio proveedor de sesión personalizado: Eso sería como reinventar la rueda.Cree una aplicación IIS separada para cada empresa: No funcionará, porque crear nuevas empresas debería ser posible a través de algo comohttp: //webshopserver/CreateYourOwnWebshop.asp sin ninguna intervención humana (administrador del servidor) después.

Estoy pensando más en una solución en la línea de:

Restringir la ruta de la cookie de sesión ahttp: // webshopserver / <companyName> / otelling ASP.NET para usar diferentes AppDomains dependiendo de la URL.

Por lo tanto, cualquier información sobre cómo lograr uno de estos puntos (o tal vez una solución completamente diferente) sería útil.

Respuestas a la pregunta(4)

Su respuesta a la pregunta