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#のIComparableの実装方法+IComparerとの違いについて

<目次> (1) C#のIComparableの実装方法+IComparerとの違いについて  (1-1) IComparableの概要とIComparableとの違い  (1-2) STEP0:比較 …

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

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

C#で型をStringからintに変更する方法~TryParseメソッドによる型変換~

<目次> (1) C#で型をStringからintに変更する方法  (1-1) 構文  (1-2) サンプルプログラム  (1-3) プログラム補足「'{0}’や'{1}’」に …

Entity Frameworkとは?概要や仕組みについて

  <目次> (1) Entity Frameworkとは?概要や仕組みについて  (1-1) Entity Frameworkとは?  (1-2) オブジェクトとテーブルが1:1対応しない …

Xamarin.Formsで画面遷移を実装する手順について+ソースコードも紹介

<目次> (1) Xamarin.Formsで画面遷移を実装する手順について  (1-1) 遷移先ページの追加  (1-2) 画面遷移ロジック追加   (1-2-1) ボタンコントロールの追加   ( …

  • English (United States)
  • 日本語
Top