繁体   English   中英

Asp.net HttpContext.Current.Items返回null

[英]Asp.net HttpContext.Current.Items returning null

我正在测试构建一个asp.net Web应用程序。 我有3个网页:

Default.aspx;
Home.aspx;
ThirdPage.aspx;

当用户将登录数据提交到Default.aspx时,我从db检索用户信息,将其放在一个类中,然后像这样将其添加到Context中。

HttpContext.Current.Items.Add("UserData", userData);

然后,我使用Server.Transfer将请求发送到Home.aspx。 在Home.aspx上,我有一个指向ThirdPage.aspx的链接。 我单击此链接,希望这里也可以提供用户信息,但实际上没有。 我希望在Web应用程序中所有页面的整个用户会话中保留userdata类,直到用户会话过期为止。 可以请一个人指导吗? 这可能是一个初学者的问题,所以请客气。 谢谢

检查ASP.NET会话状态概述

用法:

Session["UserData"] = userData;

我不确定确切的问题可能是什么,但是我有一些可行的解决方案。 如果我没记错的话,您尝试通过几个页面获取用户信息?

以下是完成此操作的一些方法:

  1. 重复您在第一页上执行的代码,将数据传输到第二页并对其进行调整,以使其在第二页到第三页都能正常工作。 这可能可行,但我不建议您这样做,因为每次创建新页面时都必须重用和修改代码。
  2. 我认为最好的方法是将您的信息写入XML文件,并在会话期满时删除该文件。 你可以找到如何把它写在这里和阅读它在这里
  3. 但是我个人最喜欢的是拥有一个静态类。 静态类可以从任何地方访问。 由于页面上显示在这里

    公共静态类Globals

     { public static String name; public static int age; public void SetName(){...} public void SetAge(){...} public String GetName(){...} public int GetName(){...} } 
    • 只需将其设置为可变类即可(您可以使用函数来更改变量),并且应该很容易跨页面获取用户信息。

      1. 使用JSON保存和加载的是c#函数:

    公共无效SaveInfo(用户){

    //转换为Json字符串json = JsonConvert.SerializeObject(user,Formatting.Indented);

     //Write to file, you will have to create a file serverside if you want //if you have a File.WriteAllText(@"location.json", json); 

    }

    公共无效LoadUser(){使用(StreamReader r = new StreamReader(“ Location.json”)){字符串json = r.ReadToEnd(); 列表项= JsonConvert.DeserializeObject>(json); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM