日期:2014-05-18  浏览次数:20417 次

非常奇怪的问题.从来没遇到过...SESSION错乱
登陆以后保存Session[ "Userid "]   =   sdr[ "Userid "].ToString().Trim();

每个会员发布的信息,都用这个Session[ "Userid "]来标识

其中Session[ "Userid "]为用户的ID,数字型


然后就是发布信息的时候:

public   static   string   Userid= " ";

在ISPOSTBACK里
if(Session[ "Userid "]   ==   null   ||   Session[ "Userid "].ToString().Trim()   ==   String.Empty)
{
Response.Redirect( "Login.aspx ");
Response.End();
}

Userid   =   Session[ "Userid "].ToString().Trim();

然后就是提交向数据库中插入数据


结果用A和B两个不同的帐号登陆发布信息

会出现下面的错误

A发布的信息会跑到B的信息列表里去
B发布的信息也会跑到A的信息列表里去

在读取会员发布信息的时候,也是用Session[ "Userid "]来对应数据库中的会员标识来的...

怎么会这样呢?

------解决方案--------------------
具体在insert语句里面调试下看看是否A,B取到的
Session[ "Userid "] = sdr[ "Userid "].ToString().Trim();这个值是不是有问题!
------解决方案--------------------
public static string Userid= " ";
两个同时登录时会出现问题

------解决方案--------------------
中断看看是你Userid = Session[ "Userid "].ToString().Trim();这句就取到错误的数据还是什么。

这个一般不会出现错乱,你打开你的数据库看看数据库里的数据有没有问题,如果没问题就应该是读取数据的时候写错了SQL语句。


估计你是在显示发布信息的时候读取数据库的SQL语句有问题
------解决方案--------------------
A发布的信息会跑到B的信息列表里去
B发布的信息也会跑到A的信息列表里去
-----------------------------------------什么意思?
你的存储过程都是一样插入一个表而已啊。
insert into UserProList(Uid,Classid,ProBid,ProSid,ProBH,ProName,ProPP,ProXH,ProJG,ProDW,ProQDL,ProPic,ProMsg,ProTime)
values(@Userid,@Classid,@ProBid,@ProSid,@ProBH,@ProName,@ProPP,@ProXH,@ProJG,@ProDW,@ProQDL,@FileName,@ProMsg,@ProTime)
-----------------------这样字有什么错乱呢?

一般都不会什么错乱的呢!
------解决方案--------------------
你先插入1条新的记录,然后直接打开的你数据库看看插入的Uid对不对
------解决方案--------------------
你那个USERID不定义静态也较好点。。
------解决方案--------------------
public string Userid= " ";
不要定义为静态看看
------解决方案--------------------
你在登陆页面Session.Clear();
------解决方案--------------------
应该是推出的时候没有清空session!
------解决方案--------------------
你插入的都是空的Session[ "Userid "]= " ";静态的问题
------解决方案--------------------
跟踪一下session,一般不会出理这种问题的
可能是你自己代码逻辑问题
------解决方案--------------------
不要定义成STATIC