Maison  >  Article  >  développement back-end  >  Analyser comment Asp.net utilise Session

Analyser comment Asp.net utilise Session

Y2J
Y2Joriginal
2017-05-10 10:49:211615parcourir

Session est une méthode pour enregistrer l'état de session des utilisateurs et des applications Web. ASP.NET Core fournit un middleware pour gérer l'état de session. Cet article présente principalement l'utilisation de Session dans Asp.net Core. apprenez-en,

Avant-propos

2017 a commencé tranquillement, et 2017 est encore une année particulièrement importante pour moi.

J'ai écrit un Asp.net Core chez moi pendant les vacances du Nouvel An Code de vérification pour me connecter. J'ai rencontré deux petits problèmes pendant le processus de démonstration. dll dans Asp.net Core. Dans le passé, nous faisions référence directement à la DLL dans Core. Elle doit être ajoutée en fonction de NuGet ou en fonction du projet.json. la bibliothèque de classe.

Le deuxième problème est l'utilisation de Session. Pour utiliser Session dans Core, vous devez ajouter la bibliothèque de classes Session.

Ajouter une session

Ajouter basé sur NuGet sur votre projet : Microsoft.AspNetCore.Session.

Modifier startup.cs

Trouvez la méthode ConfigureServices (services IServiceCollection) dans startup.cs et injectez Session (cet endroit est le pipeline Asp.net Core) :services.AddSession();

Ensuite, nous devons dire à Asp.net Core d'utiliser la mémoire pour stocker les données de session et ajouter du code dans Configure(IApplicationBuilder app,...): app .UserSession( );

Session

1. Utilisez HttpContext.Session

2. IHttpContextAccessor
using Microsoft.AspNetCore.Http;

public class HomeController:Controller
{
   public IActionResult Index()
   {
       HttpContext.Session.SetString("code","123456");
       return View(); 
    }

    public IActionResult About()
    {
       ViewBag.Code=HttpContext.Session.GetString("code");
       return View();
    }
}

public class SomeOtherClass
{
   private readonly IHttpContextAccessor _httpContextAccessor;
   private ISession _session=> _httpContextAccessor.HttpContext.Session;

   public SomeOtherClass(IHttpContextAccessor httpContextAccessor)
   {
      _httpContextAccessor=httpContextAccessor;       
   }

   public void Set()
   {
     _session.SetString("code","123456");
   }
  
   public void Get()
  {
     string code = _session.GetString("code");
   }
}
pour stocker des objets

complexes sérialiser l'objet

lors du stockage de l'objet

Stocké dans un jsonchaîne.

public static class SessionExtensions
{
   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);
  }
}
var myComplexObject = new MyClass();
HttpContext.Session.SetObjectAsJson("Test", myComplexObject);


var myComplexObject = HttpContext.Session.GetObjectFromJson<MyClass>("Test");
Utilisez SQL Server ou

Redis pour stocker 1. SQL Server

Ajouter une référence " Microsoft .Extensions.Caching.SqlServer": "1.0.0"

Injection :

2. Redis
// Microsoft SQL Server implementation of IDistributedCache.
// Note that this would require setting up the session state database.
services.AddSqlServerCache(o =>
{
  o.ConnectionString = "Server=.;Database=ASPNET5SessionState;Trusted_Connection=True;";
  o.SchemaName = "dbo";
  o.TableName = "Sessions";
});

Ajouter une référence "Microsoft.Extensions.Caching.Redis " : "1.0.0"

Injection :

[Recommandations associées]
// Redis implementation of IDistributedCache.
// This will override any previously registered IDistributedCache service.
services.AddSingleton<IDistributedCache, RedisCache>();

1.

Tutoriel vidéo gratuit ASP

2.

Tutoriel ASP

3

Tutoriel vidéo de base de Li Yanhui

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn