Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在应用程序级别设置唯一会话变量_C#_Webforms_Session State_Global Asax - Fatal编程技术网

C# 在应用程序级别设置唯一会话变量

C# 在应用程序级别设置唯一会话变量,c#,webforms,session-state,global-asax,C#,Webforms,Session State,Global Asax,我有一个没有登录页面的Web表单应用程序。从技术上讲,用户可以直接访问任何页面。但是,我需要能够识别每个页面上的登录用户。我不想给每个页面添加代码。我宁愿在会话开始时设置一个唯一的会话变量。为此,我在Global.asax.cs中添加了以下内容: protected void Session_Start(object sender, EventArgs e) { if (Session["LoggedInU

我有一个没有登录页面的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设置为上次创建会话的任何用户。也就是说,如果Mike访问该站点,他将看到表示他是loggedInUser的数据。然而,如果凯特在他之后去网站,迈克现在会看到凯特的数据。基本上,中的最后一个会覆盖所有人的设置,而Session_Start会覆盖所有活动会话的loggedInUser值

基于此链接: 它说我应该能够为每个新会话设置唯一的会话变量,但我的结果没有显示这一点


我是不是误解了这是怎么回事?我需要在每个会话开始时为每个用户设置一个唯一的会话值

我发现了这个问题。会话_Start在一个独特的会话级别执行本应执行的操作。我引用会话值的方式完全错误。我没有访问会话值,而是实际执行以下操作:

Person loggedInUser=Global.loggedInUser


这很有意义,因为它返回了最新的用户来启动会话。

我发现了问题。会话_Start在一个独特的会话级别执行本应执行的操作。我引用会话值的方式完全错误。我没有访问会话值,而是实际执行以下操作:

Person loggedInUser=Global.loggedInUser

它返回最新用户以启动会话,这很有意义。

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