【问题标题】:Setting unique Session variables at Application level在应用程序级别设置唯一的会话变量
【发布时间】:2017-08-08 04:08:19
【问题描述】:

我有一个没有登录页面的 Web 表单应用程序。从技术上讲,用户可以直接访问任何页面。但是,我需要能够识别每个页面上的登录用户是谁。我不想向每个页面添加代码。我宁愿在会话开始时设置一个唯一的会话变量。为此,我在 Global.asax.cs 中添加了以下内容:

protected void Session_Start(object sender, EventArgs e)
        {                         
            if (Session["LoggedInUser"] == null)
            {
                string networkId = HttpContext.Current.User.Identity.Name;
                using (UnitOfWork unit = new UnitOfWork())
                {                    
                    if (networkId.IndexOf("HLM\\") > -1) { networkId = networkId.Substring(4, networkId.Length - 4); }
                    loggedInUser = unit.PersonRepository.GetByNetworkID(networkId);                                                                              
                    Session["LoggedInUser"] = loggedInUser;
                }
            }
            else
            {
                loggedInUser = (Person)Session["LoggedInUser"];
            }             
        }

我现在看到它将loggedInUser 设置为任何用户最后创建的会话。这意味着,如果迈克访问该站点,他将看到将他表示为已登录用户的数据。但是,如果 Kate 在他之后访问该站点,Mike 现在将看到 Kate 的数据。基本上,最后一个会覆盖每个人的设置,而 Session_Start 会覆盖所有活动会话的 loggedInUser 值。

基于此链接:https://books.google.com/books?id=nQkyi4i0te0C&pg=PA202&lpg=PA202&dq=C%23+set+unique+session+variable+in+global.asax&source=bl&ots=GV9nlEUzE5&sig=E4TT3NDbjp1GwEehgU3pLXKdvr0&hl=en&sa=X&ved=0ahUKEwiU9f322tvSAhVF7yYKHYaXCtwQ6AEITzAI#v=onepage&q=C%23%20set%20unique%20session%20variable%20in%20global.asax&f=false 它读取我应该能够为每个新会话设置唯一的会话变量,但我的结果没有显示。

我是否误解了它的工作原理?我需要在每个用户的每个会话开始时设置一个唯一的会话值。

【问题讨论】:

  • “loggedInUser”是 global.asax 的静态成员吗​​?!

标签: c# webforms session-state global-asax


【解决方案1】:

我发现了问题。 Session_Start 正在做一个独特的会话级别应该做的事情。我引用会话值的方式都是错误的。而不是访问我实际上正在做的会话值:

Person loggedInUser = Global.loggedInUser;

这是有道理的,它正在返回最新的用户来开始会话。

【讨论】:

    猜你喜欢
    • 2018-01-17
    • 2012-05-14
    • 2015-08-03
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    相关资源
    最近更新 更多