ホームページ >バックエンド開発 >C#.Net チュートリアル >Asp.net がセッションをどのように使用するかを分析する

Asp.net がセッションをどのように使用するかを分析する

Y2J
Y2Jオリジナル
2017-05-10 10:49:211721ブラウズ

Session は、ユーザーと Web アプリケーションのセッション状態を保存するためのメソッドです。この記事では、Asp.net Core でのセッションの使用方法を主に紹介します。

はじめに

2017 年は静かに始まりましたが、2017 年は私にとってもう一つの特に重要な年です。

私は、正月の休暇中に自宅で Asp.net Core のログイン認証コードを作成しました。1 つは、Asp.net Core での DLL の参照です。 DLL を直接参照しましたが、これは Core では不可能です。NuGet に基づいて追加するか、project.json に基づいて追加する必要があります。その後、VS を保存すると、クラス ライブラリ の復元が開始されます。 2 番目の問題は、Session を Core で使用するには、Session クラス ライブラリを追加する必要があります。

セッションを追加

NuGet に基づいてプロジェクトに追加します:

Microsoft.AspNetCore.Session

startup.cs を変更します

startup.cs でメソッド ConfigureServices(IServiceCollection services) を見つけて、Session を挿入します (この場所は Asp.net Core パイプラインです):

services.AddSession();

次に、 Asp.net Core がセッション データを保存するためにメモリを使用するようにするには、Configure(IApplicationBuilder app,...): app.UserSession();

Session

1 で HttpContext.Session

を使用します。コントローラー
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();
    }
}

2. コントローラー内にない場合は、IHttpContextAccessor

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

を挿入して、複雑な

オブジェクト

を格納するときに、オブジェクト を json 文字列

にシリアル化して格納できます。

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");
SQL Server または RedisStorage を使用します

1、SQL Server参照 "Microsoft.Extensions.Caching.SqlServer": "1.0.0" を追加します

Inject:

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

2、Redis

参照「Microsoft.Extensions.Caching.Redis」を追加します: "1.0.0"

インジェクション:

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

【関連する推奨事項】

1.

ASP の無料ビデオ チュートリアル

2.

Li Yanhui ASP 基本ビデオチュートリアル

以上がAsp.net がセッションをどのように使用するかを分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。