MongoDB.Web.Providers.MongoDBSessionStateProvider.GetItem C# (CSharp) Method

GetItem() public method

public GetItem ( HttpContext context, string id, bool &locked, System.TimeSpan &lockAge, object &lockId, SessionStateActions &actions ) : System.Web.SessionState.SessionStateStoreData
context System.Web.HttpContext
id string
locked bool
lockAge System.TimeSpan
lockId object
actions SessionStateActions
return System.Web.SessionState.SessionStateStoreData
        public override SessionStateStoreData GetItem(HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions)
        {
            return GetSessionStateStoreData(false, context, id, out locked, out lockAge, out lockId, out actions);
        }

Usage Example

Ejemplo n.º 1
0
		/// <summary>
		/// Method that creates a new session, waits for it to automatically expire and then
		/// verifies that the session has been removed from the provider as well as the provider's
		/// memory cache.
		/// </summary>
		/// <param name="mongoSessionStateProvider">The MongoDB provider to use for the test.</param>
		private void VerifySessionExpiration(MongoDBSessionStateProvider mongoSessionStateProvider)
		{
			var mongoSessionStateProviderBaseType = mongoSessionStateProvider.GetType().BaseType;

			HttpRequest httpRequest = null;
			HttpResponse httpResponse = null;
			HttpContext httpContext = GetContext(out httpRequest, out httpResponse);

			var timeoutInMinutes = (_TimeoutInSeconds / 60);
			var storeData = mongoSessionStateProvider.CreateNewStoreData(httpContext, timeoutInMinutes);
			storeData.Items["DummyEntry"] = "DummyValue";

			string sessionId = null;
			lock (_SessionIdManager)
			{
				sessionId = _SessionIdManager.CreateSessionID(httpContext);
			}

			object lockId = null; // New items don't have a lockId
			mongoSessionStateProvider.SetAndReleaseItemExclusive(httpContext, sessionId, storeData, lockId, true);

			TestContext.WriteLine("Created Session {0}", sessionId);

			int counter = _TimeoutInSeconds + 60;

			TestContext.WriteLine("Waiting {0} seconds...", counter);
			while (counter > 0)
			{
				System.Threading.Thread.Sleep(1000);
				counter--;
			}

			bool locked;
			TimeSpan lockAge;
			object lockId2 = null;
			System.Web.SessionState.SessionStateActions actions;
			var storeDataAfterExpiry = mongoSessionStateProvider.GetItem(httpContext, sessionId, out locked, out lockAge, out lockId2, out actions);

			if (storeDataAfterExpiry == null || storeDataAfterExpiry.Items.Count == 0)
			{
				TestContext.WriteLine("Session expired from Session State Provider.  Verifying session provider cache...");

				ISessionStateData objectInCache = null;
				bool objectExistsInCache = CheckSessionExistsInCache(mongoSessionStateProvider, sessionId, out objectInCache);

				if (objectInCache != null)
				{
					Assert.Fail("Session data exists in cache when should have expired - Expires = {0}", objectInCache.Expires);
				}
				else if (objectInCache == null && objectExistsInCache)
				{
					Assert.Fail("Session data has expired but the cache is retaining the object!");
				}
				else
				{
					TestContext.WriteLine("Success - session data does not exist in cache.");
				}
			}
			else
			{
				Assert.Fail("Session expired but MongoDB Sessions State Provider still contains data!");
			}
		}
All Usage Examples Of MongoDB.Web.Providers.MongoDBSessionStateProvider::GetItem