2

セッション変数に書き込めません。

これは私のソースコードです:

   public class CurrentUser
    {

        public static string UserName
        {
            get
            {
                if (HttpContext.Current.Session["UserName"] != null)
                    return (string)HttpContext.Current.Session["UserName"];
                else
                    return null;
            }

            set
            {
                HttpContext.Current.Session["UserName"] = value;
            }
        }
    }

私はこのクラスを書き込み用に呼び出します。

public class SQLGetData
    {

        public UserDC LogIn()
        {

            UserDC userDC = new UserDC();


            CurrentUser.Id = 1;
            CurrentUser.UserName = "Admin"; 

            userDC.id = 1;
            userDC.UserName = "Admin";

            return userDC;
        }


    }

(MasterPage.aspx)を呼び出したいとき:

Label1.Text = CurrentUser.Id + CurrentUser.UserName;

結果: CurrentUser.Idは1で、CurrentUser.UserNameはNULLです。

CurrentUser.UserNameがNULLになるのはなぜですか?このパブリック文字列UserNameを変更して書き込むにはどうすればよいですか?

4

3 に答える 3

0

あなたが共有するコードからは、何が起こっているのかを推測することしかできないため、実際にあなたを助けることはできません.

CurrentUser クラスには、Username と同様のコードを持つ Id プロパティがあると想定しています。Id プロパティは期待どおりに機能しますが、ユーザー名は機能しません...これは本当に奇妙に聞こえます。

クラスの完全なコードを共有できますか? または少なくとも Id プロパティのコードですか?

次に、SQLGetData クラスを呼び出す場所を理解するのにも役立ちます。認証はどのように機能しますか?

于 2012-05-29T19:41:05.570 に答える
0

この種のセッション ヌル シナリオに関する私の知恵では、アプリケーションで隠れたエラーが発生しているが、発見されていないことがわかります。コード内の例外はセッションを強制終了し、新しいセッションを続行する可能性があるため、値は null です...

最良の方法は、すべての例外ハンドラでデバッグ --> 例外メニューを使用して開発環境コードを実行し、いくつかのシナリオでアプリケーションを実行すると、最終的には convertToInt などの単純なエラーや同様の参照エラーから始まる隠れたエラーがあることに気付くでしょう。 、これによりセッションがnullになります...しかし、私が推測したように、「エラー」ページのエラーで問題は発生しませんでしたが、すべての例外がONオプションで上記の「DEBUG」で見つかりました。

それが役に立てば幸い!ハイドテック

于 2013-06-13T15:11:42.353 に答える
-1

最初に「UserName」を使用してセッションに導入する必要があります

HttpContext.Current.Session.Add("UserName", value)

あなたのセッターで。

public class CurrentUser     
{          
 public static string UserName         
 {             
    get             
    {                 
      if (HttpContext.Current.Session["UserName"] != null)                     
         return (string)HttpContext.Current.Session["UserName"];
      else                     
         return null;             
    }              
    set             
    {                
      if (HttpContext.Current.Session["UserName"] == null)
         HttpContext.Current.Session.Add("UserName", value);
      else
         HttpContext.Current.Session["UserName"] = value;            
    }         
  }     
}

それをした後、あなたが書いたように動作するはずです。

于 2012-05-29T22:00:06.007 に答える