| File: ISessionStore.cs | Web Access |
| Project: src\aspnetcore\src\Middleware\Session\src\Microsoft.AspNetCore.Session.csproj (Microsoft.AspNetCore.Session) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.Http; namespace Microsoft.AspNetCore.Session; /// <summary> /// Storage for sessions that maintain user data while the user browses a web application. /// </summary> public interface ISessionStore { /// <summary> /// Create a new or resume an <see cref="ISession"/>. /// </summary> /// <param name="sessionKey">A unique key used to lookup the session.</param> /// <param name="idleTimeout">How long the session can be inactive (e.g. not accessed) before it will expire.</param> /// <param name="ioTimeout"> /// The maximum amount of time <see cref="ISession.LoadAsync(System.Threading.CancellationToken)"/> and /// <see cref="ISession.CommitAsync(System.Threading.CancellationToken)"/> are allowed take. /// </param> /// <param name="tryEstablishSession"> /// A callback invoked during <see cref="ISession.Set(string, byte[])"/> to verify that modifying the session is currently valid. /// If the callback returns <see langword="false"/>, <see cref="ISession.Set(string, byte[])"/> should throw an <see cref="InvalidOperationException"/>. /// <see cref="SessionMiddleware"/> provides a callback that returns <see langword="false"/> if the session was not established /// prior to sending the response. /// </param> /// <param name="isNewSessionKey"><see langword="true"/> if establishing a new session; <see langword="false"/> if resuming a session.</param> /// <returns>The <see cref="ISession"/> that was created or resumed.</returns> ISession Create(string sessionKey, TimeSpan idleTimeout, TimeSpan ioTimeout, Func<bool> tryEstablishSession, bool isNewSessionKey); }