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

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

関連記事

C#のabstract(抽象クラス)とは?継承やoverrideの手順や使い方をご紹介

<目次> (1) C#の抽象クラスやabstractとは?意味や使い方をご紹介  (1-1) 抽象クラスとは?  (1-2) 抽象クラスの使い方   (1-2-1) 抽象クラスの定義   (1-2-2 …

ASP.NETの既存プロジェクトに単体テストプロジェクトを追加する手順

<目次> (1) ASP.NETの既存プロジェクトに単体テストプロジェクトを追加する手順  (1-1) 新規プロジェクトを作成  (1-2) 参照の追加  (1-3) 単体テスト用のコードの記述  ( …

VisualStudioで文字列の検索をソリューション内やプロジェクト内で行う方法

<目次> (1) VisualStudioで文字列の検索をソリューション内やプロジェクト内で行う方法  (1-1) 検索方法   (1-1-1) 「検索と置換」画面を開く   (1-1-2) 検索条件 …

C#で文字列の前に付いてるアットマーク「@」について

<目次> (1) C#で文字列の前に付いてるアットマーク「@」について  (1-1) 概要  (1-2) 主な用途  (1-3) 注意点 (1) C#で文字列の前に付いてるアットマーク「@」について …

C#でフォルダ内のファイルの一覧を取得する方法

<目次> (1) C#でフォルダ内のファイルの一覧を取得する方法  (1-1) 方法①構文  (1-2) 方法①サンプルプログラム  (1-3) 方法②構文  (1-4) 方法②サンプルプログラム ( …

  • English (United States)
  • 日本語
Top