SessionDiskCache 0.1版發布

來源:互聯網
上載者:User

What:
SessionDiskCache 是一個在Asp.net中可插接使用的HttpModule,SessionDiskCache支援asp.net2.0,不支援asp.net1.0和asp.net1.1
Why:
通常在我們對系統進行維護時(或其他意外情況)可能導致使用者Session丟失,為了盡量減少此時的損失於是產生了SessionDiskCache
How:
SessionDiskCache在程式結束時將Session序列化到磁碟,程式重新開始時有新會話建立則檢查是否有同一SessionID的檔案,並將內容重新載入到Session
理論上使用SessionDiskCache無需對程式進行任何改動,但你需要為SessionDiskCache提供儲存功能的類增加可序列化標籤
Where:
SessionDiskCache可以用在個人網站,網站或企業級asp.net應用程式中

預備知識:
HttpModule
Session inproc
.net Serialization

如何安裝:
一、把編譯好的PBLee.WebUtil.SessionDiskCache.dll複製到web發布bin檔案夾下
二、修改web.config

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    <configSections>
        <section name="SessionDiskCache" type="PBLee.WebUtil.SessionDiskCache.SessionDiskCacheConfigurationSectionHandler, PBLee.WebUtil.SessionDiskCache"/>
    </configSections>
  <!-- Path 設定儲存Session序列檔案儲存路徑 ~\使用當前網站相對路徑 -->
    <SessionDiskCache Path="~\SessionCache"/>
    <system.web>
        <httpModules>
            <add type="PBLee.WebUtil.SessionDiskCache.SessionDiskCache, PBLee.WebUtil.SessionDiskCache" name="SessionDiskCache"/>
        </httpModules>

    </system.web>
</configuration>

三,為可以在SessionDiskCache中儲存的類增加可序列化標籤[Serializable][Serializable]
public class LoginUser

完成

SessionDiskCache如何工作:
作為HttpModule監聽Session_Start Session_End Application_End事件                sessionModule.Start +=new EventHandler(SessionDiskCache_SessionStart);

                sessionModule.End +=new EventHandler(SessionDiskCache_SessionEnd);

                context.Disposed +=new EventHandler(context_ApplicationEnd);

Session開始時檢查是否有已序列到磁碟的Session對象private void SessionDiskCache_SessionStart(object sender, EventArgs e)
        {
            HttpSessionState session = HttpContext.Current.Session;
            session["SessionID"] = session.SessionID;
            SessionList.Add( session );
            LoadSession( session );
        }

Application停止時將所有Session儲存到磁碟private void context_ApplicationEnd(object sender, EventArgs e)
        {
            foreach ( System.Web.SessionState.HttpSessionState session in SessionList )
            {
                SaveSession( session );
            }
        }

注意:
SessionDiskCache只能用於可捕獲Application_End的情況,如bin檔案夾變動,web.config變動,IIS停止
如果您準備使用SessionDiskCache,請盡量瞭解前面提到的預備知識,已備在需要修改時有能力獨立完成。
本工具以免費開放原始碼方式提供,不保證提供支援人員和版本更新
相關技術討論可以在本Blog(http://pblee.cnblogs.com)進行

原始碼和Sample 點擊這裡下載

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.