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

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

関連記事

Entity Frameworkの使い方や導入手順をご紹介

  <目次> (1) Entity Frameworkの使い方や導入手順をご紹介  (1-1) 前提条件  (1-2) STEP0:ASP:NET MVCプロジェクトの準備  (1-3) S …

SOAP通信のサンプルをご紹介(ASP.NET Web Service=ASMXを使ったHelloWorld)

  <目次> (1) SOAP通信のサンプルをご紹介(ASP.NET Web Service=ASMXを使ったHelloWorld)  (1-1) SOAP通信とは?  (1-2) SOAP …

C#のデリゲートが分からない・・を解決!初心者向けになるべく分かり易く説明してみた

<目次> (1) C#のデリゲートが分からない・・を解決!初心者向けになるべく分かり易く説明してみた  (1-1) デリゲートとは?「関数へのポインタ」だけでは説明しきれない・・  (1-2) デリゲ …

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

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

Xamarin.Formsのプロジェクトを新規作成する手順

<目次> (1) Xamarin.Formsのプロジェクトを新規作成する手順  (1-1) Xamarin.Formsプロジェクトの作成   (1-1-1) プロジェクト新規作成   (1-1-2) …

  • English (United States)
  • 日本語
Top