Raven.AspNetProviders.RavenSessionStateStoreProvider.ReleaseItemExclusive C# (CSharp) Method

ReleaseItemExclusive() public method

public ReleaseItemExclusive ( HttpContext context, string id, object lockId ) : void
context System.Web.HttpContext
id string
lockId object
return void
        public override void ReleaseItemExclusive(HttpContext context, string id, object lockId)
        {
            id = "sessionstates/" + id;

            using (var session = _documentStore.OpenSession())
            {
                var sessionState = session.Query<SessionState>()
                    .Customize(x => x.WaitForNonStaleResultsAsOfLastWrite())
                    .Single(x => x.Id == id && x.ApplicationName == ApplicationName && x.LockId == (int)lockId);

                sessionState.IsLocked = false;

                var expireDate = DateTime.UtcNow.AddMinutes(_sessionStateConfig.Timeout.TotalMinutes);

                sessionState.ExpireDate = expireDate;
                session.Advanced.GetMetadataFor(sessionState)["Raven-Expiration-Date"] = new RavenJValue(expireDate);

                session.SaveChanges();
            }
        }