2011-03-04 2 views
12

Est-il possible de créer un mode d'état de session entièrement personnalisé au lieu d'utiliser Inproc ou SQLServer?Gestion de l'état de session personnalisée ASP.Net

+1

Pour votre information: presque tout ce que vous pourriez vouloir configurer dans .NET est basé sur le « modèle de fournisseur », ce qui signifie qu'il ya toutes sortes de choses que vous pouvez écrire les fournisseurs pour. Le seul inconvénient est que le fichier app.config/web.config peut parfois devenir un peu poilu. ;-) – BrainSlugs83

Répondre

10

Oui, tout à fait, vous pouvez écrire un custom session state store provider en mettant en œuvre SessionStateStoreProviderBase classe et puis définissez le mode d'état de session à cette mise en œuvre personnalisée dans web.config:

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

C'est une ancienne question relative à quelque chose que je fais ici et maintenant d'octobre 2014.

Fondamentalement, les réponses originales sont toujours correctes, en ce que vous pouvez Construisez votre propre système de gestion d'état de session OutProc personnalisé, mais avec Microsoft étant maintenant beaucoup plus impliqué avec l'open source, vous pouvez tout aussi facilement passer à MSOpenTech and download the Redis port for Windows qui est également pris en charge par Windows Azure. Redis est un système de gestion d'état de session OutProc qui peut être exécuté dans une fenêtre de processus/console autonome ou en tant que service Windows pour une session de fond de panier/une valeur de clé.

MSOpenTech:

Redis est un open-source très populaire, en réseau, en mémoire, valeur clé magasin de données. Il est connu pour sa haute performance, sa flexibilité, sa richesse en structures de données et une API simple et directe. MS Open Tech a travaillé avec la communauté Redis pour créer un port Windows Red Hat de prêt à la production, y compris le support 64 bits, un programme d'installation pour Windows Azure, le support NuGet et bien plus encore.

Redis.io Intro:

Redis est une open source, BSD sous licence, cache avancé valeur clé et magasin. Il est souvent désigné comme serveur de structure de données depuis les clés peuvent contenir des chaînes, hash, listes, ensembles, classés ensembles, bitmaps et hyperloglog

Vous pouvez l'utiliser pour stocker l'état de session pour ASP.NET MVC, WebAPi et SignalR qui sont très pratiques dans un environnement de ferme Web.

Install-Package Microsoft.Web.RedisSessionStateProvider

Il est facilement configuré via web.config et quand je dis facile, je veux dire facile.

<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> 

Si facile en fait, j'ai d'abord pensé que je devais me tromper.;) Mais c'est tout ce qu'il faut pour extraire l'état de session à Redis.

C'est un port avec de hautes performances, très proche de la version POSIX d'origine.

Nous l'utilisons pour une application de services financiers qui rencontre des charges élevées de poussées et de retraits en temps réel via Signalr, qui, comme ci-dessus, «prend également en charge» Redis pour maintenir l'état de session du concentrateur. Alors que vous pouvez toujours faire comme les réponses acceptées, environ 3 ans et demi plus tard, je regarderais vers certaines de ces alternatives à l'expérience de gestion de session ASP.NET par défaut qui sont disponibles, gratuitement, via OSS.

https://github.com/MSOpenTech/redis

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