[解決済み] ASP.NETで任意のクラスからセッション変数にアクセスする方法は?
2022-04-24 01:23:32
質問
アプリケーションのApp_Codeフォルダーにクラスファイルを作成しました。セッション変数
Session["loginId"]
このセッション変数に自分のクラスでアクセスしたいのですが、次の行を書くとエラーになります。
Session["loginId"]
ASP.NET 2.0(C#)のapp_codeフォルダに作成されたクラス内で、セッション変数にアクセスする方法を教えてください。
どのように解決するのですか?
(完全性を保つために更新)
どのページやコントロールからでも、セッション変数にアクセスするには
Session["loginId"]
また、任意のクラス (たとえばクラスライブラリ内) からは
System.Web.HttpContext.Current.Session["loginId"].
しかし、私の本来の回答は続きをお読みください...
私はいつもASP.NETセッションの周りにラッパークラスを使用して、セッション変数へのアクセスを簡素化しています。
public class MySession
{
// private constructor
private MySession()
{
Property1 = "default value";
}
// Gets the current session.
public static MySession Current
{
get
{
MySession session =
(MySession)HttpContext.Current.Session["__MySession__"];
if (session == null)
{
session = new MySession();
HttpContext.Current.Session["__MySession__"] = session;
}
return session;
}
}
// **** add your session properties here, e.g like this:
public string Property1 { get; set; }
public DateTime MyDate { get; set; }
public int LoginId { get; set; }
}
このクラスは、ASP.NETセッションに自身のインスタンスを1つ保存し、任意のクラスから型安全な方法でセッションプロパティにアクセスできるようにします(例:このような場合)。
int loginId = MySession.Current.LoginId;
string property1 = MySession.Current.Property1;
MySession.Current.Property1 = newValue;
DateTime myDate = MySession.Current.MyDate;
MySession.Current.MyDate = DateTime.Now;
この方法にはいくつかの利点があります。
- 多くのタイプキャストを省くことができます。
- アプリケーション全体でハードコードされたセッションキーを使用する必要がない (例: Session["loginId"])。
- MySession のプロパティに XML doc コメントを追加することで、セッション アイテムを文書化することができます。
- セッション変数をデフォルト値で初期化することができます(例:NULLでないことを保証する)。
関連
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] C#がforeachで変数を再利用するのは理由があるのか?
-
[解決済み] C#でDecimalをDoubleに変換する方法は?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] IISのAppPoolIdentityとファイルシステムの書き込みアクセス権
-
[解決済み】サーブレットはどのように動作するのですか?インスタンス化、セッション、共有変数とマルチスレッド
-
[解決済み】App_Codeに存在するクラスにアクセスできない。
-
[解決済み] ASP.NET MVCにおけるセッション変数
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない