2014-01-10 124 views
0

我正在探索其他存儲會話狀態的方法,並找到了一些使用Redis的站點。使用Redis的ASP.Net會話狀態

的問題是,該網站已經開發並部署生產服務器上,從此我不能改變一個晚上的邏輯。

有沒有一種方法,在這裏我們可以使用Redis的實現自定義會話狀態提供程序,並使用相同的保存會話密鑰。

相同,即作爲會話密鑰後執行的Redis如何處理併發/值是每節唯一的,Redis的是怎麼樣的值存儲在內存中。

是否有任何其他會話狀態管理模式,我看了一下memcached的,但Redis的被首選爲最佳的自定義會話狀態的實現。

我嘗試過使用ServiceStack,AngiesList實現,但無法實現相同。

是否有與ASP.Net &的Redis,其中,我們可以從InProc方式轉變的會話狀態的Redis有關的任何執行。

尋找有利答覆。

感謝

回答

0

請看看TheCloudlessSky Implementation,我發現它非常有用和簡單。但是,如果你把CustomObject(類)會話,你需要確保它具有顯着的「序列化」(c# example

另外,如果您有AnonymousType i.e. new {...},你需要至少一個簡單的類定義它的值的類型並聲明'Serializable'(c# example)也在它的頭上。

+0

嗨,我已經試過了也忘了提一樣,實際上該網站是已經開發和我想的將會話狀態轉移到Redis,這是我無法實現的。如果它起作用了,那麼我們將聲明所有會話自定義對象序列化。但我無法得到它的工作。請建議。 –

1

如果我理解你的問題是正確的,你的情況和我的一樣。請按照以下

  1. 步驟添加到您的web.config

Note: if your want to customized Timeout just put Timeout=XX in first tag

  • 通過的NuGet安裝包
  • 港.RedisSessionStateStore.1.1.0.0 \ lib \ net40 \ Harbour.RedisSessionStateStore.dll

    0

    在您的應用程序中搜索字高速緩存,如果它們存在,則必須使用序列化和反序列化。否則,您只需要在web.config中進行配置。所有的會話對象將指向配置提及新的服務器

    0

    Redis的是會話狀態的最佳選擇,即使下面的Redis緩存現在大公司。

    要實現這一點,您需要執行很少的步驟。

    1.)添加引用RedisSessionStateProvider(使用NetGet包) 2.)在Web中添加以下行。配置

    <providers><add name="RedisSessionStateStoreProvider" type="RedisAspNetProviders.SessionStateStoreProvider, RedisAspNetProviders" dbNumber="2" keyPrefix="MyWebApplication/SessionState/" connectionStringName="RedisConnectionString" /> 
    
    </providers> 
    

    <outputCache defaultProvider="RedisOutputCacheProvider"> 
    
        <providers> 
    
        <add name="RedisOutputCacheProvider" type="RedisAspNetProviders.OutputCacheProvider, RedisAspNetProviders" connectionString="100.1000.100.258,connectTimeout=10000" /> 
    
        </providers> 
    
    </outputCache>