C#
 Computer >> コンピューター >  >> プログラミング >> C#

C# ASP.NET Coreでセッションを有効にする方法を徹底解説

セッション(Session)は、ASP.NET Coreに組み込まれた機能の一つで、ユーザーのデータをサーバー上に保存・保持するために使用されます。

セッションの仕組み

セッションでは、データはサーバー側のディクショナリ形式で保存され、その際「SessionId」がキーとして利用されます。SessionIdはクライアント側ではCookieとして保存され、以降のすべてのリクエストに自動的に付加されて送信されます。

このSessionId Cookieはブラウザごとに発行されるため、異なるブラウザ間で共有することはできません。

また、SessionId Cookieには有効期限(タイムアウト)が設定されておらず、ブラウザのセッションが終了した時点で削除されます。

一方、サーバー側のセッションデータは一定期間のみ保持されます。既定のセッションタイムアウトは20分ですが、設定によって自由に変更できます。

Microsoft.AspNetCore.Sessionパッケージの追加

Microsoft.AspNetCore.Sessionパッケージは、ASP.NET Coreでセッションを管理するためのミドルウェアを提供します。アプリケーションでセッションを利用するには、まずこのパッケージを依存関係として追加する必要があります。

なお、初期のASP.NET Core 1.xではproject.jsonファイルに記述していましたが、.NET Core 2.0以降では、NuGetパッケージマネージャーや.csprojファイル経由で追加するのが一般的です。

Startupクラスでのセッション構成

次のステップとして、Startupクラスでセッションを構成します。

具体的には、StartupクラスのConfigureServicesメソッド内で「AddSession」メソッドを呼び出します。

「AddSession」メソッドにはオーバーロードが用意されており、アイドルタイムアウト(IdleTimeout)、Cookie名(Cookie.Name)、Cookieドメイン(Cookie.Domain)など、さまざまなセッションオプションを指定できます。

セッションオプションを特に指定しない場合は、システムの既定値が自動的に適用されます。

実装例

public class Startup {
    public void Configure(IApplicationBuilder app){
        app.UseSession();
        app.UseMvc();
        app.Run(context => {
            return context.Response.WriteAsync("Hello World!");
        });
    }
    public void ConfigureServices(IServiceCollection services){
        services.AddMvc();
        services.AddSession(options => {
            options.IdleTimeout = TimeSpan.FromMinutes(60);
        });
    }
}

上記のコードでは、ConfigureServicesメソッド内でAddSessionを呼び出してセッションサービスを登録し、IdleTimeoutを60分に設定しています。さらに、Configureメソッド内でapp.UseSession()を呼び出すことでセッションミドルウェアが有効になります。UseSession()は必ずUseMvc()よりも前に呼び出す必要がある点に注意してください。

セッションへのアクセス方法

public class HomeController : Controller{
    [Route("home/index")]
    public IActionResult Index(){
        HttpContext.Session.SetString("product","laptop");
        return View();
    }
    [Route("home/GetSessionData")]
    public IActionResult GetSessionData(){
        ViewBag.data = HttpContext.Session.GetString("product");
        return View();
    }
}

HttpContext.Sessionプロパティを通じて、SetStringメソッドで文字列データを保存し、GetStringメソッドで取得できます。これらの拡張メソッドを利用するには、Microsoft.AspNetCore.Http名前空間をusingステートメントで参照しておく必要があります。

  1. Windows 10で.NET Framework 3.5を有効化またはインストールする方法

    Windows OSには、バージョンごとに既定で有効になっている.NET Frameworkが搭載されています。しかし、Windows 10/8では.NET Framework 3.5がデフォルトで無効化されています。それにもかかわらず、多くのアプリケーションは依然として.NET Framework 3.5を必要とします。そのため、.NET Framework 3.5が必須のソフトウェアやアプリを起動しようとすると、次のようなエラーメッセージが表示されることがあります。 .NET Framework 3.5が見つからない場合の対処法 .NET Framework 3.5を有効にするには、「W

  2. ASP.NET Machineアカウントとは?正体と安全な削除方法を解説

    Windowsのローカルユーザーアカウントは、複数人で同じPCを共有する際にプライバシーを守れる便利な機能です。しかし最近、多くのユーザーの間で奇妙な現象が報告されています。それが、「ASP.NET Machine」という見覚えのないアカウントがPCに勝手に現れるというものです。「家族がいたずらをしたのでは?」と不安になる方もいるかもしれませんが、ご安心ください。この記事では、ASP.NET Machineアカウントとは何か、そしてPC上のこのユーザーアカウントにどう対処すればよいのかをわかりやすく解説します。ASP.NET Machineアカウントとは?一見ウイルス感染のように思えますが、実