Windows / Active Directory認証を使用するASP.NET(VB)Webアプリケーションで作業しています
モジュールを使用しているので、各ページでそれらにアクセスするために新しいオブジェクトをインスタンス化する必要なしに、パブリックサブルーチンと関数、および参照変数を呼び出すことができます。
そのモジュール内には、Webアプリケーション全体の複数のページで使用しているいくつかのパブリック変数があります。最近、モジュール内のこれらのパブリック変数の値がすべてのユーザー間で共有されることに気付きました。
目標:これらのグローバル変数の値を単一のユーザーに固有にし、すべてのセッション間で共有しないようにし、変数を使用するすべてのページで新しいオブジェクト/クラスをインスタンス化する必要はありません。
キャッチ:Cookieやセッションなどのクライアント側の変数に値を格納したくありません。値をサーバーに保存したいのですが、各クライアント/ユーザーに固有です。
私が考えることができる唯一のことは、グローバルコレクション/辞書を設定し、認証されたユーザー名で変数を格納することですが、値を取得および設定するための特定の関数が必要です。これは機能しますが、アプリケーションのすべてのページでこれらの変数へのすべての参照を更新する必要があります。
問題の例:以下のコードは、モジュール内でパブリック変数を作成する方法と、あるページから値を設定して別のページで使用する方法を示しています。この変数を引き続き同じように使用して、その値をページ間で共有したいのですが、変数の値をユーザー間で共有する必要はありません。
--MODULE.VB-
Public Module MyMod
Public myVariable as String = ""
End Module
--MAINPAGE.VB-
Partial Class _Default
Sub Page_Load() Handles MyBase.Load()
myVariable = "HELLO WORLD"
End Sub
End Class
--NEXTPAGE.VB-
Partial Class _Default
Sub Page_Load() Handles MyBase.Load()
Response.Write(myVariable)
End Sub
End Class
このアプリケーションには、userIDインデックス付きコレクションソリューションを使用する必要がある場合に手動で更新する必要があるページがたくさんあるので、これらの変数を別のスコープにする方法、または共有を無効にする方法があることを望んでいます。セッション間。前もって感謝します!