2011-03-04 9 views
12

¿Es posible construir un modo de estado de sesión totalmente personalizado en lugar de utilizar Inproc o SQLServer?ASP.Net Custom Session State Management

+1

FYI: Casi todo lo que desea configurar en .NET se basa en el "modelo de proveedor", que significa que hay todo tipo de cosas que se pueden escribir los proveedores de. El único inconveniente es que la aplicación.config/web.config a veces puede ponerse un poco peluda como resultado. ;-) – BrainSlugs83

Respuesta

10

Sí, por supuesto, se podría escribir un custom session state store provider mediante la implementación de SessionStateStoreProviderBase clase y luego ajustar el modo de estado de sesión a esta implementación personalizada en web.config:

<sessionState 
    mode="Custom" 
    customProvider="SomeCustomProviderName"> 
    <providers> 
     <add name="SomeCustomProviderName" 
      type="YourNamespace.CustomSessionStateStore" 
      connectionStringName="SomeConnectionString" /> 
    </providers> 
</sessionState> 
0

Esta es una pregunta más antigua relacionada con algo que estoy haciendo en el aquí y ahora de la OCT 2014.

Básicamente, las respuestas originales siguen siendo correctos, en el que pueda construya su propio sistema de gestión de estado de sesión OutProc personalizado, pero con Microsoft ahora mucho más involucrado con el código abierto, podría simplemente andar a lo largo de MSOpenTech and download the Redis port for Windows, que también es compatible con Windows Azure.

Redis es un sistema de gestión de estado de sesión OutProc que se puede ejecutar en una ventana de proceso/consola independiente o como servicio de Windows para la sesión de placa de fondo/almacén de valores de clave.

MSOpenTech:

Redis es una de código abierto muy popular, en red, en memoria, valor clave almacén de datos. Es conocido por su alto rendimiento, flexibilidad, un amplio conjunto de estructuras de datos y una API sencilla y directa. MS Open Tech tiene estado trabajando con la comunidad de Redis para construir un puerto Windows de Redis listo para la producción , que incluye soporte de 64 bits, un instalador para Windows Azure, soporte NuGet y mucho más.

Redis.io Intro:

Redis es un código abierto, con licencia BSD, avanzado caché de clave-valor y tienda. A menudo se refiere como un servidor de estructura de datos desde las teclas pueden contener cadenas, hash, listas, juegos, juegos, mapas de bits y hyperloglogs

Se puede utilizar para almacenar el estado de sesión de ASP.NET MVC ordenados, WebAPi y SignalR, que es muy útil en un entorno de granja web.

Instalar Paquete Microsoft.Web.RedisSessionStateProvider

Se configura fácilmente a través de web.config y cuando digo fácil, me refiero fácil.

<system.web> 
    <sessionState mode="Custom" customProvider="MySessionStateStore"> 
     <providers> 
     <add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="127.0.0.1" port="6379" accessKey="" ssl="false" /> 
     </providers> 
    </sessionState> 
</system.web> 

De hecho, al principio pensé que debía hacerlo mal.;) Pero eso es todo lo que se necesita para pasar el estado de la sesión a Redis.

Es un puerto de alto rendimiento, muy parecido a la versión original de POSIX.

Lo estamos utilizando para una aplicación de servicios financieros que se encuentra con grandes cargas de empujes y tirones en tiempo real a través de Signalr, que también "apoya" a Redis para mantener el estado de la sesión del concentrador.

Por lo tanto, aunque todavía puede hacer las respuestas aceptadas, unos 3 años y medio más tarde consideraría algunas de estas alternativas a la experiencia de gestión de sesiones ASP.NET predeterminada que están disponibles, de forma gratuita, a través de OSS.

https://github.com/MSOpenTech/redis

http://www.codeproject.com/Articles/636730/Distributed-Caching-using-Redis