2011-03-04 135 views
12

是否可以构建完全自定义的会话状态模式而不是使用Inproc或SQLServer?ASP.Net自定义会话状态管理

+1

FYI:你能想到的.NET配置几乎一切是基于“提供者模型”,这意味着,你可以写提供商的东西各类。唯一的缺点是,app.config/web.config有时会因此而变得有点多毛。 ;-) – BrainSlugs83 2012-10-22 14:35:25

回答

10

是的,当然,你可以写在web.config中一个custom session state store provider通过实施SessionStateStoreProviderBase类,然后设置会话状态模式这个定制的实现:

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

这是与一些旧的问题,我做在这里,现在十月的2014年

基本上,最初的答案仍然是正确的,因为你可以构建您自己的定制OutProc会话状态管理系统,但微软现在更加关注开源,您可以轻松前往MSOpenTech and download the Redis port for Windows,这也受到Windows Azure的支持。

Redis是一个OutProc会话状态管理系统,可以在独立的进程/控制台窗口中运行,也可以作为用于背板会话/键值存储的Windows服务运行。

MSOpenTech:

Redis是一个非常流行的开源,网络,内存,键值 数据存储。它以高性能,灵活性,数据结构丰富的集合以及简单直接的API而闻名。微软开放技术有 一直与Redis社区合作建立一个生产就绪 Redis的Windows端口,包括64位支持,Windows Azure的安装程序,NuGet支持等等。

Redis.io简介:

的Redis是一个开源的,BSD授权的,先进的键值缓存和 店。因为它可以 包含字符串,散列,列表,集合,排序集合,位图和 hyperloglogs

你可以用它来存储会话状态的ASP.NET MVC键通常被称为数据结构服务器, WebAPi和SignalR在Web农场环境中非常方便。

安装,包装Microsoft.Web.RedisSessionStateProvider

它很容易通过的web.config配置,当我说的容易,我的意思是容易的。

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

这么容易,其实我起初以为我一定是做错了。;) 但这只是将会话状态转移到Redis所需的全部资源。

它的高性能端口,非常接近原来的POSIX版本。

我们正在使用它作为金融服务应用程序,它遇到通过Signalr进行实时推送和高负载的高负载,如上所述还支持Redis以维护中心会话状态。

因此,尽管您仍然可以接受答案,但大约3年半之后,我会考虑通过OSS免费提供的默认ASP.NET会话管理体验的一些替代方案。

https://github.com/MSOpenTech/redis

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