ASPでの使用方法NET CoreでのSessionの使用

3172 ワード

ASP.NET Coreはプラットフォームにまたがる、オープンソース、軽量レベル、高性能かつ高度にモジュール化されたwebフレームワークであり、Sessionはユーザー情報記憶を実現することができ、同じクライアントの複数回の要求の間でユーザー追跡を実現することができ、ASP.Net Coreでは、Microsoft.AspNetCore.Sessionミドルウェアを使用してセッションメカニズムを有効にすることができます.
ミドルウェアの価値は、request -> responseのプロセスにおいて、例えば、データを監視し、ルーティングを切り替え、フロー中のメッセージ体を修正することであり、通常、ミドルウェアはチェーン方式でASPに注入される.Net Coreのpipelineパイプラインでは,この論文では主にSessionミドルウェアの使用方法について議論する.

Sessionミドルウェアのインストール


セッションミドルウェアを使用するには、Visual Studio 2019のNuGet package managerビジュアルインタフェースを使用してインストールするか、NuGet package manager consoleコマンドラインで次のコマンドを入力します.

Install-Package Microsoft.AspNetCore.Session

セッションミドルウェアの構成

Microsoft.AspNetCore.Sessionがプロジェクトに正常にインストールされました.次にASPに追加できます.Net Core pipelineでは、セッションを開始するには、IDistributedCacheインタフェースを実装したcache storeを使用してセッションの最下位ストレージとして使用する必要があります.その後、ConfigureServicesメソッドの下でAddSessionメソッドを呼び出してIOCコンテナに詰め、最後にStartup.Configureメソッドでは、UseSessionを使用してrequest->response要求パイプに挿入します.具体的なコードは次のとおりです.

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDistributedMemoryCache();
        services.AddSession(options =>
        {
            options.IdleTimeout = TimeSpan.FromSeconds(5);
            options.Cookie.HttpOnly = true;
            options.Cookie.IsEssential = true;
        });
        services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

セッションミドルウェアがIOCコンテナに組み込まれると、次に、コンフィギュレーションメソッドでUseSessionを呼び出してセッションを開始することができる.

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseSession();
        app.UseHttpContextItemsMiddleware();
        app.UseMvc();
    }

セッションの保存と取得


Set,SetInt 32,SetStringの3つの方法を使用してSessionのストレージを実現することができます.これらの方法には2つのパラメータがあります.1つはキーで、1つはキーに対応するデータで、Set方法のvalueはbyte[]形式に対応しています.
同様に、Get、GetInt 32、GetStringメソッドを使用してセッションの読み取りを実現できます.Getメソッドはstring形式のkeyを受信し、byte[]配列を返します.これらの拡張メソッドを使用するには、Microsoft.AspNetCore.Httpをプロジェクトに参照する必要があります.
次のコードは、sessionにデータを追加する方法を示しています.

public IActionResult Index()
{
   HttpContext.Session.SetString("Message", "Hello World!");
   HttpContext.Session.SetInt32("Year", 2019);
   return View();
}

次に、sessionからデータを取得する方法を見てみましょう.次のコードに示します.

public IActionResult About()
{
    ViewBag.Message = HttpContext.Session.GetString("Message");
    ViewBag.Year = HttpContext.Session.GetInt32("Year");
    return View();
}

他のタイプのデータを設定または取得したい場合は、ISessionインタフェースに拡張メソッドを追加し、独自にシーケンス化ロジックを実装し、sessionから複雑なタイプを設定または取得する場合は、このタイプをjsonにシーケンス化するか、jsonをmodelに逆シーケンス化することができます.
もう1つ注意したいのは、デフォルトのセッションはメモリベースです.つまり、プロセスがセッションを閉じると失われます.セッションの持続化を実現するには、sqlserverまたはredisを使用します.
翻訳リンク:
https://www.infoworld.com/art...