handle sessions in asp.net core

Updated : Apr 30, 2020 in Asp.net core

How to handle sessions in asp.net core with example

In this the lesson, we learn How to handle sessions in asp.net core with example step by step

Sessions: sessions are used to share the data between multiple web pages, we will check either the user is login or not

handle sessions in asp.net core
handle sessions in asp.net core

In asp.net core sessions are enables us to save/store the user data at client side .this user data will store the dictionary on the server and we will use sessionId is used as a key.the sessionId will store at client-side cookie and cookies is sent with each every request

Steps for implementing the sessions in asp.net core

  • Create an ASP.NET Core MVC Project
  • Add Configurations in Startup.cs
  • Add Entity model class
  • Add Session Helper class
  • Create Controller
  • Create View page
  • Add Razor View Imports page

Create an ASP.NET Core MVC Project: open Visual Studio, create a new ASP.NET Core  project

create Asp.net core project

Select Empty Template and Click Ok button to Finish

Add Configurations in Startup.cs: Open Startup.cs file in your project and add new configurations as given below code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;

namespace SampleHtml
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddSession();
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseSession();

            app.UseStaticFiles();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Demo}/{action=Index}/{id?}");
            });
        }
    }
}

Add Entity model class: Create a new folder named as Models. In the Models folder, you will create a new entity class name as the alike product.cs see the given below code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace SampleHtml.Models
{
    public class Product
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public double Price { get; set; }
        public string Location { get; set; }
    }
}

Add Session Helper class: Create a new folder name as  Helpers. In this folder, create new helper name SessionHelper.cs as given below code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;

namespace SampleHtml.Helpers
{
    public static class SessionHelper
    {
        public static void SetObjectAsJson(this ISession session, string key, object value)
        {
            session.SetString(key, JsonConvert.SerializeObject(value));
        }

        public static T GetObjectFromJson<T>(this ISession session, string key)
        {
            var value = session.GetString(key);
            return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
        }
    }
}

Add Controller: Create a new folder named Controllers in your project. In this folder, create a new controller named ProductController.cs as given below:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using SampleHtml.Helpers;
using SampleHtml.Models;

namespace SampleHtml.controlles
{

    [Route("demo")]
    public class DemoController : Controller
    {
        [Route("")]
        [Route("index")]
        [Route("~/")]
        public IActionResult Index()
        {
            HttpContext.Session.SetInt32("age", 20);

            HttpContext.Session.SetString("username", "abc");

            Product product = new Product
            {
                Id = "product_1",
                Name = "Mobiles",
                Price = 5000,
                Location="Hyderabad"
            };
            SessionHelper.SetObjectAsJson(HttpContext.Session, "product", product);

            List<Product> products = new List<Product>() {
                new Product {
                    Id = "product_1",
                    Name = "Let TVs",
                    Price = 3457,
                    Location="India"
                },
                new Product {
                    Id = "product_2",
                    Name = "Shirt",
                    Price = 900,
                    Location="USA"
                },
                new Product {
                    Id = "product_3",
                    Name = "Food",
                    Price = 2890,
                    Location="UK"
                },
                new Product {
                    Id = "product_4",
                    Name = "House",
                    Price = 28905,
                    Location="Japan"
                }
            };
            SessionHelper.SetObjectAsJson(HttpContext.Session, "products", products);
            return View("Index");
        }
    }
}

Add View: Add a new folder named Views. In this folder, add a new folder named Product and add new views as given below:

@{
    Layout = null;
}
@using Microsoft.AspNetCore.Http;
@using SampleHtml.Helpers;
@using SampleHtml.Models;

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <link rel="stylesheet" href="https://tutorialshelper.com/demo/Css/dynamictable.css">
</head>
<body>

    <h3>Session Page information </h3>
    Age: @Context.Session.GetInt32("age")
    <br />
    Username: @Context.Session.GetString("username")

    <h3>Product Information</h3>
    @{
        Product product = SessionHelper.GetObjectFromJson<Product>(Context.Session, "product");
    }
    Id: @product.Id
    <br />
    Name: @product.Name
    <br />
    Price: @product.Price
    <br />
    Location:@product.Location

    <h3>List Of Products</h3>
    @{
        List<Product> products = SessionHelper.GetObjectFromJson<List<Product>>(Context.Session, "products");
    }
    <h1>How to upload multiple files in asp.net core</h1>
    <table class="table blueTable" cellpadding="2" cellspacing="2" border="1">

        <tbody>
            @foreach (var p in products)
            {
                <tr>
                    <th>Id</th>
                    <td> @p.Id</td>
                </tr>
                <tr>
                    <th>Name</th>
                    <td>  @p.Name</td>
                </tr>
                <tr>
                    <th>Price</th>
                    <td>  @p.Price</td>
                </tr>
                <tr>
                    <th>Location</th>
                    <td>  @p.Location</td>
                </tr>
            }
        </tbody>
    </table>
</body>
</html>

Add Razor View Imports page: Select Razor View page and click Add button to Finish and Add Inside  _ViewImports.cshtml file and TagHelpers library as given below:

Add Razor View Imports page:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

Run Project:

How to handle sessions in asp.net core with example
How to handle sessions in asp.net core with example

SandeepMVN
Like
Like Love Haha Wow Sad Angry
1

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x