public override void CreateUninitializedItem(HttpContext context, string id, int timeout) { MongoClient conn = GetConnection(); IMongoCollection <BsonDocument> sessionCollection = GetSessionCollection(conn); var doc = MongoSessionStateStoreHelpers.GetNewBsonSessionDocument( id: id, applicationName: ApplicationName, created: DateTime.Now.ToUniversalTime(), lockDate: DateTime.Now.ToUniversalTime(), lockId: 0, timeout: timeout, locked: false, jsonSessionItemsArray: new BsonArray(), flags: 1); this.UpsertEntireSessionDocument(sessionCollection, doc); }
/// <summary> /// SessionStateProviderBase.SetAndReleaseItemExclusive /// </summary> public override void SetAndReleaseItemExclusive( HttpContext context, string id, SessionStateStoreData item, object lockId, bool newItem) { BsonArray arraySession = MongoSessionStateStoreHelpers.Serialize(item); MongoClient conn = GetConnection(); var sessionCollection = GetSessionCollection(conn); if (newItem) { var insertDoc = MongoSessionStateStoreHelpers.GetNewBsonSessionDocument( id: id, applicationName: ApplicationName, created: DateTime.Now.ToUniversalTime(), lockDate: DateTime.Now.ToUniversalTime(), lockId: 0, timeout: item.Timeout, locked: false, jsonSessionItemsArray: arraySession, flags: 0); this.UpsertEntireSessionDocument(sessionCollection, insertDoc); } else { var filter = Builders <BsonDocument> .Filter.And( Builders <BsonDocument> .Filter.Eq("_id", MongoSessionStateStoreHelpers.GetDocumentSessionId(id, ApplicationName)), Builders <BsonDocument> .Filter.Eq("LockId", (Int32)lockId) ); var update = Builders <BsonDocument> .Update .Set("Expires", DateTime.Now.AddMinutes(item.Timeout).ToUniversalTime()) .Set("SessionItemJSON", arraySession) .Set("Locked", false); this.UpdateSessionCollection(sessionCollection, filter, update); } }