在ASP.NET页面获取不到Session值。

foxriver1205 2010-01-12 03:59:40
Sessions.LoginName = cusName;
Sessions.CustomerID = Convert.ToInt32(ds.Tables[0].Rows[0]["PKID"]);
public static class Sessions
{
private static HttpContext CurrContext
{
get { return HttpContext.Current; }
}

/// <summary>
/// 用户登陆后的用户ID,0表示没有登陆
/// </summary>
public static int CustomerID
{
get
{
try
{ return CurrContext.Session["CustomerID"] == null ? 0 : Convert.ToInt32(CurrContext.Session["CustomerID"]); }
catch
{ return 0; }
}
set
{ CurrContext.Session["CustomerID"] = value; }
}

/// <summary>
/// 用户登陆后的用户登录名,""表示没有登陆
/// </summary>
public static string LoginName
{
get
{
return CurrContext.Session["LoginName"] == null ? "" : CurrContext.Session["LoginName"].ToString().Trim();
}
set
{ CurrContext.Session["LoginName"] = value; }
}


if (!Page.IsPostBack)
{
if (Sessions.LoginName.ToString() == "")
{
Response.Redirect(Request.ApplicationPath.ToString() + "index.aspx", true);
}
else
{
int pkid = Convert.ToInt32(Sessions.CustomerID.ToString());
FillInfo(pkid);
}
}
代码如上:为什么我在另一个页面(从登录页面跳转过去的页面)获取不到Sessions.LoginName呢?
...全文
893 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
cfesc9 2010-01-14
  • 打赏
  • 举报
回复
好像Response.Redirect是在客户端执行的。

直接重定向网页。

楼主可以试试Server.Transfer
yangjian0830 2010-01-14
  • 打赏
  • 举报
回复
同意楼上的,应该是不会丢失的。
av168659700 2010-01-13
  • 打赏
  • 举报
回复
取session的代码在哪里?
foxriver1205 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sp1234 的回复:]
引用 2 楼 newdigitime 的回复:
原因:当asp.net 执行 Response.Redirect 时会强制终止当前Response ,不发送当前页面的cookie 给浏览器,而是发送一个指令告诉浏览器重新发送一个新的HTTP请求到新的URL,结果导致当前的Session 丢失。


可以肯定地说,根本不是这样的。
[/Quote]
这位仁兄,有何高见呢? 对于这个Session丢失的问题?我跳转到其他页面没一点问题,跳到这就出现这问题了?
xray2005 2010-01-13
  • 打赏
  • 举报
回复
先把你自己包装的代码去掉。

存的时候直接:
Session["UserName"]="123"

再取的时候直接:
if(Session["UserName"]==null)
{
Response.Redirect("index.aspx");
}
else
{

}

试试看。 就知道是你代码的问题,还是丢失的问题。

Response.Redirect导致vsession丢失?说实话,还是第一次听说。
foxriver1205 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 kingdomgps 的回复:]
我不知道Response.Redirect("yyy.aspx");会不会造成Session丢失
但有一点是肯定的:
asp.net 执行 Response.Redirect 时会强制终止当前Response

解决的办法其实很简单,就是写成 Response.Redirect("yyy.aspx",false)

大家去看看这个方法的第二个参数解释就知道了
[/Quote]
这访法试了下,不行啊!
foxriver1205 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 av168659700 的回复:]
取session的代码在哪里?
[/Quote]
在这:
if (!Page.IsPostBack)
{
if (Sessions.LoginName.ToString() == "")
{
Response.Redirect(Request.ApplicationPath.ToString() + "index.aspx", true);
}
else
{
int pkid = Convert.ToInt32(Sessions.CustomerID.ToString());
FillInfo(pkid);
}
}
大聪 2010-01-12
  • 打赏
  • 举报
回复
把第二个aspx发上来

要实现IHttpSessionState ,看看是不是这个原因
ycproc 2010-01-12
  • 打赏
  • 举报
回复
说用cookie的 我晕
cookie和session 完全是两个 概念

LZ的代码确实很乱的

调试了吗
调试一下
看看是哪里出了问题啊
  • 打赏
  • 举报
回复
你的前两行在哪里写的?

如果写不清楚动态逻辑,只会写静态逻辑,这样你根本描述不出真正的程序逻辑。
  • 打赏
  • 举报
回复
楼主:说实在的,你的代码相当乱并且过多地弱类型转换,我(刚吃完饭还没过酒劲)看的有点头晕。看不明白你的代码。
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 newdigitime 的回复:]
原因:当asp.net 执行 Response.Redirect 时会强制终止当前Response ,不发送当前页面的cookie 给浏览器,而是发送一个指令告诉浏览器重新发送一个新的HTTP请求到新的URL,结果导致当前的Session 丢失。
[/Quote]

可以肯定地说,根本不是这样的。
zyd0405 2010-01-12
  • 打赏
  • 举报
回复
if (Session["uname"]==null){
Session["uname"]="uname";
}
else
{
string uname=Session["uname"].toString();
}
newdigitime 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 kingdomgps 的回复:]
我不知道Response.Redirect("yyy.aspx");会不会造成Session丢失
但有一点是肯定的:
asp.net 执行 Response.Redirect 时会强制终止当前Response

解决的办法其实很简单,就是写成 Response.Redirect("yyy.aspx",false)

大家去看看这个方法的第二个参数解释就知道了
[/Quote]

看起来有道理.楼主测试一下
凋零的老树 2010-01-12
  • 打赏
  • 举报
回复
改用cookie
注册失败 2010-01-12
  • 打赏
  • 举报
回复
我不知道Response.Redirect("yyy.aspx");会不会造成Session丢失
但有一点是肯定的:
asp.net 执行 Response.Redirect 时会强制终止当前Response

解决的办法其实很简单,就是写成 Response.Redirect("yyy.aspx",false)

大家去看看这个方法的第二个参数解释就知道了
ILOVE_ASPNET 2010-01-12
  • 打赏
  • 举报
回复
up
newdigitime 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 rpoplar 的回复:]
楼上说的真的还是假的?为什么我在用Response.Redirect()后还是可以收到Session的值,
比如从logIn.aspx,页面到a.aspx,可以收到session的值,但是从a.aspx,到b.aspx页面就手不到session 的值了。
我也一直没有搞清楚!
但是我用application全局变量,就可以实现!
[/Quote]
那你就要对比一下,login.aspx与a.aspx在跳转前的操作有什么不同.
yang_5 2010-01-12
  • 打赏
  • 举报
回复
我也有过同样的经历,谁有好的办好分享一下!
灵雨飘零 2010-01-12
  • 打赏
  • 举报
回复
up
加载更多回复(4)

62,051

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧