You are on page 1of 2

In .NET Core (now known as .NET 5 and later as .NET 6, .NET 7, etc.

), sessions are used to


store and manage user-specific data between HTTP requests. Sessions are commonly
used for storing user authentication tokens, shopping cart data, and other user-specific
information.

Here's how you can work with sessions in .NET Core:

1. Configure Session Middleware: First, you need to configure the session


middleware in your Startup.cs file. This middleware is responsible for managing
sessions.
csharpCopy code
// Inside the ConfigureServices method in Startup.cs services.AddDistributedMemoryCache(); // This is
required to store session data in-memory. services.AddSession(options => { options.IdleTimeout =
TimeSpan.FromMinutes( 30 ); // Set your desired session timeout. options.Cookie.HttpOnly = true ;
options.Cookie.IsEssential = true ; });
2. Use Session in Controllers: You can use sessions in your controllers to store and
retrieve data. For example, you can use the HttpContext.Session property:
csharpCopy code
// Inside a controller action method HttpContext.Session.SetString( "UserName" , "JohnDoe" ); string
userName = HttpContext.Session.GetString( "UserName" );
You can store various types of data in sessions, including strings, integers, or
custom objects by serializing them.
3. Accessing Session Data in Razor Views: If you want to access session data in
your Razor views, you can use the Session object. For example:
csharpCopy code
@using Microsoft.AspNetCore.Http @{ var userName = HttpContext.Session.GetString( "UserName" ); }
<p>Welcome, @userName!</p>
4. Middleware Order: Make sure that the session middleware is added before any
middleware that needs to access session data, such as authentication
middleware.
csharpCopy code
// Inside the Configure method in Startup.cs app.UseSession(); // Add other middleware, like
authentication, after UseSession.
5. Session Cleanup: Sessions should be properly managed and cleaned up to avoid
potential security risks and memory leaks. .NET Core provides options for
automatically handling session cleanup and expiration.
6. Distributed Sessions: If your application is hosted on multiple servers or
instances, you may need to use distributed caching for session management. In
such cases, you can replace AddDistributedMemoryCache() with a distributed
caching provider like Redis or SQL Server.
Remember to use sessions judiciously and consider other options like cookies or tokens
when appropriate, as sessions can consume server memory and may not be suitable for
all scenarios.

You might also like