0

私のページでは、ボタンをクリックして次のページに移動するたびにセッションIDを再生成しています。ログイン時にセッション変数 (session["uname"]=txtusername.text) にユーザー名を既に保存しています。新しいセッションIDの。そのため 、セッション開始関数でGlobal.asaxを使用してセッション変数の値を設定したいのです。

void Session_Start(object sender, EventArgs e) 
    {
       session["uname"]=here;
    }

しかし、ここ Global.asax ページでは、ログイン ページから値にアクセスできません。. 主な問題は、コード ビハインドから global.asax の任意の値にアクセスすることです。 どうすればこれを解決できますか......Plz help......事前に感謝します........

4

2 に答える 2

0

まず、 Global.asax にビジネス ロジックを記述しないでください。3つの基本的なことを指摘したいと思います:

  1. session_start() が呼び出されたとき
  2. セッションの維持方法
  3. セッション変数を設定する場所。

次の詳細については、login.aspx、login.aspx.cs があると想定しています。

ご存じのとおり、HTTP はステートレス プロトコルであるため、すべてのリクエストは新しいリクエストです。したがって、リクエストごとに session_start() が実行されます。

ユーザーが初めてリソースを要求すると、一意のセッションが生成され、セッション ID を含む Cookie がクライアントに送信されます。

ユーザーからのさらなる要求に対して、HTTP クライアントは Cookie をサーバーに渡すため、サーバーはユーザーを追跡できます。これがセッションの仕組みです。


Gloabl.asax の session_start() で Session["uname"] を設定しているコードに移ります。Globlax.asax はページのライフサイクルが始まる前に呼び出されるため、ページ データにアクセスできないことに注意してください。

代わりに、login.aspx.cs ファイルで Session["uname"] を設定する必要があります。ここで、ユーザーの資格情報が正しいかどうかを確認してから、
Session["uname"]=value を設定します。

これで、他のすべてのリクエストに対して、そのユーザーの Session["uname"] が利用可能になります。また、Global.asax の session_start() で値を取得/更新することもできます。

于 2012-07-19T06:36:16.387 に答える