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

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

関連記事

BundleConfig.csの設定および記述方法について

  <目次> (1) BundleConfig.csの設定および記述方法について  (1-1) BundleConfig.csの設定および記述方法について  (1-2) BundleConf …

C#のコンソールアプリで引数を与えて実行する方法

<目次> (1) C#のコンソールアプリで引数を与えて実行する方法  (1-1) 設定箇所  (1-2) サンプルプログラム  (1-3) サンプルプログラムの補足 (1) C#のコンソールアプリで引 …

C#のIListとは?Listとの違いや使いどころもご紹介

<目次> (1) C#のIListとは?Listとの違いや使いどころもご紹介  (1-1) IListやIList<T>とは?  (1-2) Listとの違い  (1-3) IListの利 …

ASP.NETでビュー(View)に複数のモデル(Model)を連携する方法

  <目次> (1) ASP.NETでビュー(View)に複数のモデル(Model)を連携する方法  (1-1) やりたい事の整理  (1-2) ViewModelを使った複数モデルの連携 …

C#でNLogライブラリを用いてログ出力を行う方法

<目次> (1) C#でNLogライブラリを用いてログ出力を行う方法  (1-1) NLogの概要  (1-2) NLogの導入手順  (1-3) NLogの初期実装手順  (1-4) NLogのサン …

  • English (United States)
  • 日本語
Top