Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

ASP.NET C#

ASP.NET MVCにおけるSessionオブジェクトについて

投稿日:2021年6月28日 更新日:

<目次>

(1) ASP.NET MVCにおけるSessionオブジェクトについて
 (1-1) Session(セッション)とは?
  (1-1-1) セッションの開始と終了
 (1-2) Sessionの構文
 (1-3) Sessionのサンプルプログラム
  (1-3-1) Controller
  (1-3-2) View

(1) ASP.NET MVCにおけるSessionオブジェクトについて

(1-1) Session(セッション)とは?

セッション(Session)は、同一のクライアントがシステムの利用を開始(例:ブラウザを開いてログイン)してから、利用を終了(例:ログアウト、ブラウザを閉じる)するまでの「状態を保持」するための仕組みです。各セッションに対して一意の「セッションID」が発行され、そのセッションに対してユーザがこれまで操作してきた経過や結果などを格納して、それをページ間で引き継ぐ事で後続の処理で再度利用していきます。

こうした技術が登場している背景として、HTTPはステートレス(クライアント・サーバ間の要求/応答の組はそれぞれが独立しており、それ以前の要求/応答との対応関係がない)なプロトコルであるため、たくさん来る要求/応答の組の前後関係の紐づき(例:同一人物による依頼か?)の情報は持っていません。
 
そのため、同一人物による連続した処理(例:商品を選ぶ⇒カートに入れる⇒購入処理)を実現するためには、上記のSessionの説明にあるような「同一クライアントの利用開始~利用終了」における状態(誰による取引か?)といった情報を保持する必要があり、そうした経緯から「セッション」が誕生しました。

(1-1-1) セッションの開始と終了

セッションの始まり方はいくつかのパターンがありますが、例えば以下のようなケースです。

・①クライアントからアプリケーション内のページに対応するURLのリクエストが来た場合
・②Sessionオブジェクトを用いて、ユーザの情報を格納した場合
・③クライアントからのリクエストに有効なSessionIDが存在しない場合
 
セッションの終わり方も色々ありますが、例えば以下のようなケースです。
 
・①Webサイトにおいて長時間の間、操作やページの更新を行わなかった時(タイムアウトで自動終了)
・②Webサーバで障害が発生したケースなど(強制的にセッションが終了)
 

(1-2) Sessionの構文

ASP.NETではセッションを実現する方法がいくつかありますが、今回は代表的な方法の1つである「Session」オブジェクトに値を格納していくやり方をご紹介いたします。

(構文:データをセッションに追加)

Session["キーの名前"] = [格納する値];

 

(例)

Session["example1"] = "Rainbow session test 1";

 

(構文:データをセッションから取り出し)

@Session["キーの名前"]

 

(例)

@Session["example1"]

 

(構文:データをセッションから削除)

Session["キーの名前"] = null;

 

(例)

Session["example1"] = null;

目次にもどる

(1-3) Sessionのサンプルプログラム

(1-3-1) Controller

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVCTest.Controllers
{
  public class HomeController : Controller
  {
    public ActionResult SessionTest()
    {
      Session["example1"] = "Rainbow session test 1";
      return View();
    }
  }
}

(図131)

目次にもどる

(1-3-2) View

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>ViewBag Test</title>
</head>
<body>
    <div>HelloWorld</div>
    <div>@Session["example1"]</div>
</body>
</html>

(図132)

 

上記を実行すると、Controller側でSessionの「example1」というキーにセットした値「”Rainbow session test 1″」が画面に表示されています。

(図133)実行結果

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-ASP.NET, C#

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

ASP.NETでViewに値を渡す方法

  <目次> (1) ASP.NETでViewに値を渡す方法  (1-1) 方法1:アクションメソッドの引数に追加  (1-2) 方法2:ViewBagを使う方法  (1-3) 方法3:ビュ …

SOAP通信の仕組みやHTTPプロトコルとの違いなど

  <目次> (1) SOAP通信の仕組みやHTTPプロトコルとの違いなど  (1-1) SOAPとは?  (1-2) SOAPを構成する要素  (1-3) SOAPの通信の仕組み&HTTP …

ASP.NETのRazor入門~Razorとは?や使い方をご紹介

<目次> (1) ASP.NETのRazor入門~Razorとは?や使い方をご紹介  (1-1) Razorとは?  (1-2) 基本構文  (1-3) サンプルプログラム (1) ASP.NETのR …

ASP.NETのMVCとは?入門者向けの概要説明やHelloWorld

<目次> (1) ASP.NETのMVCとは?入門者向けの概要説明やHelloWorld  (1-1) ASP.NET MVC5とは?  (1-2) MVCのアーキテクチャ概要  (1-3) ASP. …

C#のlockとは?意味や使い方とサンプルプログラムをご紹介

  <目次> (1) C#のlockとは?意味や使い方とサンプルプログラムをご紹介  (1-1) 概要  (1-2) 構文  (1-3) サンプルプログラム  (1-4) lockステートメ …

  • English (United States)
  • 日本語
Top