Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Methode zur Verwendung von Session in Asp.net

Einführung in die Methode zur Verwendung von Session in Asp.net

Y2J
Y2JOriginal
2017-05-16 10:02:562048Durchsuche

Session ist eine Methode zum Speichern des Sitzungsstatus von Benutzern und Webanwendungen. In diesem Artikel wird hauptsächlich die Verwendung von Session in Asp.net Core vorgestellt Erfahren Sie mehr darüber,

Vorwort

2017 begann ruhig und 2017 ist ein weiteres besonders wichtiges Jahr für mich.

Ich habe zu Hause während der Neujahrsfeiertage einen Bestätigungscode geschrieben, um mich anzumelden. Während des Demoprozesses bin ich auf zwei kleine Probleme gestoßen dll in Asp.net Core. Dies ist in Core nicht möglich. Es muss auf Basis von NuGet oder project.json hinzugefügt werden.

Das zweite Problem ist die Verwendung von Session. Um Session in Core zu verwenden, müssen Sie die Session-Klassenbibliothek hinzufügen.

Sitzung hinzufügen

Fügen Sie basierend auf NuGet zu Ihrem Projekt hinzu: Microsoft.AspNetCore.Session.

Ändern Sie „startup.cs“

Suchen Sie die Methode „ConfigureServices“ (IServiceCollection-Dienste) in „startup.cs“ und fügen Sie „Session“ ein (dieser Ort ist die Asp.net Core-Pipeline). :services.AddSession();

Als nächstes müssen wir Asp.net Core anweisen, Speicher zum Speichern von Sitzungsdaten zu verwenden und Code in „Configure(IApplicationBuilder app,...): app“ hinzuzufügen .UserSession( );

Session

1. Verwenden Sie 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");
   }
}
zum Speichern komplexer

-Objekte Serialisieren des

-Objekts beim Speichern des Objekts

In einem JSON gespeichertZeichenfolge.

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");
Verwenden Sie SQL Server oder

Redis zum Speichern von 1. SQL Server

Referenz hinzufügen " Microsoft .Extensions.Caching.SqlServer": "1.0.0"

Injektion:

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";
});

Referenz hinzufügen: "Microsoft.Extensions.Caching.Redis " : "1.0.0"

Injektion:

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

1.

Besondere Empfehlung : Version „php Programmer Toolbox“ V0.1 herunterladen2.

ASP-kostenloses Video-Tutorial

3 🎜>

Das obige ist der detaillierte Inhalt vonEinführung in die Methode zur Verwendung von Session in Asp.net. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn