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 类有一个 Id 属性,其代码与用户名相似。Id 属性按预期工作,但不是用户名……这听起来很奇怪。

你能分享你班级的完整代码吗?或者至少是 Id 属性的代码?

然后它也将有助于理解从哪里调用 SQLGetData 类。身份验证如何工作?

于 2012-05-29T19:41:05.570 回答
0

我对这种会话空场景的智慧表明 - 您的应用程序中发生了隐藏的错误,但没有发现。代码中的任何异常都会终止会话并可能继续新会话,因此值为空......

最好的方法,在带有调试->异常菜单的 vs ide 中运行您的开发环境代码,在所有异常处理程序上运行应用程序并运行多个场景,最终您会意识到从简单的错误(如 convertToInt 或类似的参考错误)开始存在隐藏错误,这导致会话变为空......但正如我猜想的那样,事情并没有在“错误”页面中出现错误,而是通过上面的“调试”找到了所有异常选项。

希望能帮助到你!海德科技

于 2013-06-13T15:11:42.353 回答
-1

您应该首先通过使用将“用户名”引入您的会话

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 回答