Heim  >  Artikel  >  Backend-Entwicklung  >  Analysieren Sie, wie Asp.net Session verwendet

Analysieren Sie, wie Asp.net Session verwendet

Y2J
Y2JOriginal
2017-05-10 10:49:211666Durchsuche

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 basierend auf NuGet oder json hinzugefügt werden. Dann beginnt die Wiederherstellung die Klassenbibliothek. 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();
    }
}

zum Speichern komplexer

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

Serialisieren des -Objekts beim Speichern des ObjektsIn einem JSON gespeichert

Zeichenfolge

.

Verwenden Sie SQL Server oder
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);
  }
}
Redis
var myComplexObject = new MyClass();
HttpContext.Session.SetObjectAsJson("Test", myComplexObject);


var myComplexObject = HttpContext.Session.GetObjectFromJson<MyClass>("Test");
zum Speichern von

1. SQL ServerReferenz hinzufügen " Microsoft .Extensions.Caching.SqlServer": "1.0.0"

Injektion:

2. Redis

Referenz hinzufügen: "Microsoft.Extensions.Caching.Redis " : "1.0.0"
// 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";
});

Injektion:

[Verwandte Empfehlungen]

1.
// Redis implementation of IDistributedCache.
// This will override any previously registered IDistributedCache service.
services.AddSingleton<IDistributedCache, RedisCache>();
Kostenloses ASP-Video-Tutorial

2. ASP-Tutorial

3. Li Yanhui ASP-Grundlagen-Video-Tutorial

Das obige ist der detaillierte Inhalt vonAnalysieren Sie, wie Asp.net Session verwendet. 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