0

私のサイトでは、ログインしたユーザー名をマスター ページ (ラベル) に表示します。これは、以下のように、セッション オブジェクトからユーザー名を取得し、それをマスター ページのラベル page_init ページ イベントに配置することによって行われます。私の問題は、タイムアウトの問題が原因でセッションをバイパスしていることですIIS プールが原因で、約 10 分後。ユーザー名を取得するためにマスター ページが読み込まれるたびに、データベースへの新しい接続を開くことができることに気付きましたが、それよりも簡単な方法があるのではないかと考えました。どんな助けでも本当に感謝します。

Protected Sub Page_Init(sender As Object, e As System.EventArgs) Handles Me.Init
txtUserInfo.Text = (Session("name") & " [ " & Session("org") & " ]") End Sub

4

2 に答える 2

2

ユーザー名だけの場合は、Humpy の応答で十分です (スレッドのプリンシパル/ID が正しく入力されていると仮定します)。さらに情報が必要な場合は、Cookie を使用できます。

ログイン後、適切な有効期限で Cookie を設定します。

Response.Cookies["userInfo"]["name"] = "currentUsername";   
Response.Cookies["userInfo"]["org"] = "currentOrg";   
Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);

後続のリクエストで、Cookie からデータを引き出すことができます。

if(Request.Cookies["userInfo"] != null)
{
   HttpCookie c = Request.Cookies["userInfo"];
   txtUserInfo.Text = Server.HtmlEncode(c["name"]) & " [" & Server.HtmlEncode(c["org"]) & "]";
}

詳細については、http: //msdn.microsoft.com/en-us/library/ms178194.ASPXを参照してください。

于 2013-11-11T15:23:03.740 に答える
0

あなたは使用できるはずです..

txtUserInfo.Text = User.Identity.Name;

これが私の使い方です。ユーザーがログインすると、ユーザーの名前が完全に表示されます。お役に立てれば!

于 2013-11-11T14:24:44.580 に答える