1

ASP.net Web サイトのすべての Web ページでコマンドに簡単にアクセスできる単一のグローバル変数を設定する方法を考えていました。

これはクラスを通じて行われますか?どうすればそれを呼び出すことができますか?

一意のユーザー ID を保持しているが、その ID をすべての Web ページの SQL クエリに使用できる例。

4

2 に答える 2

4

明らかな場所はSession.

例えば

Session["MyId"] = 99; // to set it

myId = Session["MyId"]; // to get it

ただし、セッションが失敗することもあります。したがって、別の場所はCookieになります-機密データではないと仮定します..

 // Setting a cookie
 HttpCookie myCookie = new HttpCookie("MyID");
 DateTime now = DateTime.Now;

 // Set the cookie value.
 myCookie.Value = now.ToString();
 // Set the cookie expiration date.
 myCookie.Expires = now.AddMinutes(1);

 // Add the cookie.
 Response.Cookies.Add(myCookie);

次の方法で Cookie を読み取ることができます。

 HttpCookie myCookie = Request.Cookies["MyId"];
 myId = myCookie.Value;
于 2012-12-05T19:14:01.287 に答える
1

それは本当に特定のシナリオに依存します。さまざまな動作を可能にする幅広いオプションがあります。

通常、コマンドのパラメーターになる ID の場合、リンクを生成してページ間で伝達するときに、それらをクエリ文字列パラメーターとして含めます。つまり、ユーザーを編集するための管理ページがある場合、次のような URL を含むリンクのリストを生成できます。

/Users/Edit.aspx?userID=123
/Users/Edit.aspx?userID=789

現在のユーザーの ID については、認証メカニズムによって提供される必要があります。例 (認証方法によってシナリオが異なる場合があります): ASP.NET メンバーシップ: 現在のユーザー ID はどこに保存されていますか?

そこから、他のユーザーレベルの情報は、外部キーを介してユーザー ID に関連するテーブルにある可能性があります。

Session[] は、現在のユーザーの一時的な保存に適しています。一時的なものと見なすべき理由は、アプリケーション プールがリサイクルされると有効期限が切れるか失われるからです。その場合、ユーザーは再ログインして最初からやり直す必要があるため、通常は問題ありません。本当に重要なものを保存しないでください。

静的クラスと静的プロパティを使用して、システム全体の情報を保存できます。

最後の手段として、クッキーは避けます。私のアプリに含まれる Cookie は、認証フレームワークが自動的に作成するものだけであり、私はそれらに直接触れたことはありません。ユーザーまたはサード パーティによる Cookie の悪意のある操作に関して、考慮しなければならないシナリオは多数あります。

于 2012-12-05T19:30:39.240 に答える