public abstract SessionStateStoreData GetItemExclusive( HttpContext context, string id, out bool locked, out TimeSpan lockAge, out Object lockId, out SessionStateActions actions)
下面主要是对上面几个参数的描述: context就是HttpContext id 就是SessionID locked 就是是否lock lockAge 返回值时,包括一个TimeSpan对象,是设置一个session data store 被lock的时间. lockId 包括一个当前请求lock的标识. actions 包括一个SessionStateActions值.表示当前session是否没有初始化. 在请求开始时:SessionStateModule 对象调用GetItemExclusive方法,在这个期间有一个AcquireRequestState事件,当EnableSessionState属性设置为true时,也是默认情形,如果EnableSessionState属性设置为ReadOnly,SessionStateModule对象调用的方法就改为GetItem方法. GetItemExclusive返回一个SessionStateStoreData对象主要是从数据存储中移植session信息,更新存储数据的有效日期,并且在请求期间在存储数据中lock session-item data.如果在数据存储中没有session-item数据,这时GetItemExclusive方法设置locked参数为false并且返回null引用.这个原因SessionStateModule对象会在数据存储中调用CreateNewStoreData方法去创建一个新的session item.如果session-item数据被找到但数据被lock,这时GetItemExclusive方法设置locked参数为"true",设置lockAge参数为当前日期和时间减去这时的日期和当item被锁时的时间(从数据存储中找回),设置lockId参数为从 数据存储中找回的lock标记,并且返回一个null引用.这个原因是SessionStateModule对象在每间隔半秒就会常识找回session-item信息并且获得关于数据的一个lock.如果lcokAge参数值设置为超越ExecutionTimeout,然后SessionStateModule 调用ReleaseItemExculusive方法去清出这个lock session-item 数据,并且然后再调用GetItemExclusive方法. 当cookieless和regenerateExpiredSessionId属性都设置为true时actionFlags参数才被使用.一个actionFlags值设置为初始化表示在session数据存储中的实体是一个新的需要初始化的session.在session数据存储中一个没有初始化实体被一个调用CreateUninitializedItem方法创建.如果从session数据存储的item中不是一个非初始化 item,这个actionFlags参数将被设置为"0"; 自定义session-state store 实现支持cookieless sessions 应该设置actionFlags参数返回值是从session 数据存储当前item.如果actionFlags参数值为请求session-store item与InitialzeItem 枚举值相等,然后GetItemExculsive方法应该在设置在数据存储值为0之后设置actionFlags参数.