建一个类继承SessionStateStoreProviderBase类,override Initialize、SetAndReleaseItemExclusive、ReleaseItemExclusive、GetItemExclusive、GetItem 、CreateNewStoreData 等方法。
如果会话值未更改,会在请求结束时调用ReleaseItemExclusive方法以更新到期日期并释放对会话数据存储区中项的锁定。
如果会话值已被修改,会调用SetAndReleaseItemExclusive方法将session数据存入数据库。
在请求开始时就调用GetItemExclusive 方法根据sessionid从数据库获取session数据,如果 EnableSessionState 特性设置为 ReadOnly,则 改为调用 GetItem 方法从数据库获取。
如果GetItemExclusive 未找到会话项数据,则会调用CreateNewStoreData方法在数据存储区中创建一个新会话项。
<system.web>中增加
<sessionState cookieless="false" regenerateExpiredSessionId="false" timeout="60" mode="Custom" customProvider="CouchBaseSessionProvider">
<providers>
<add name="CouchBaseSessionProvider" type="guotaigold.WebSite.Component.Framework.CouchBaseSessionStateStore" writeExceptionsToEventLog="false" />
</providers>
</sessionState>