1、你需要将你的session改为Session,注意C#是区分大小写的。
2、如果你纠正了上述错误后,还是有同样的错误出现,那么你的用法是Session中的"userName"未被添加或定义,也许是在其他页面中定义了,但当本页面直接打开而没有运行定义Session的页面“违规”访问时就会出现你反映的问题。此问题的一个解决方法是:你可以在登录页面中就加入Session.Add("userName",null)(项目中需要用到的其他Session的添加或定义,也在此页的Page_Load事件或登录成功事件方法中完成),而在其他非登录页面判断时,你将你上述代码改为如下(注意注释部分):
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session.Count==0)//因为所有添加的Session都在登录页,所以只要Session为空,则说明用户未打开登录页或未登录成功就跳转到了本页面,此时Session.Count肯定是等于0了,里面没用Session的Add方法添加任何一个Session对象,包括需要用到的"userName"。
{
Response.Write("你未注册或登录超时,请先注册或登录!");
}
else
{
if (Session["userName"] == null) {
Response.Write("你未注册或登录超时,请先注册或登录!");
}
else {
Response.Write(Session["userName"].ToString());
}
}
}
}
另一个解决方法是(仍然注意注释部分):
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try//尝试判断Session中的值
{
if (Session["userName"] == null) {
Response.Write("你未注册或登录超时,请先注册或登录!");
}
else {
Response.Write(Session["userName"].ToString());
}
}
catch(Exception e)//如果try中语句有错误则进入catch
{
if(e.Message == "当前上下文中不存在名称\"session\"")//判断错误是否是:当前上下文中不存在名称"session",如果是则说明session未定义
{
Response.Write("你未注册或登录超时,请先注册或登录!");
}
}
}
}
附:其实在VS.Net中Session不用Add方法也一样可以被自动添加和使用的(不过个人用Session习惯先定义再使用,也就是先用Add方法再使用Session中的对象),所以根据你的代码及错误提示信息,我估计是因为没有区分大小写的问题,所以请将你所有写了小写的session改为Session,应该就没有问题了。
刚刚
|
老鸟四级
|园豆:3151
|
2008-05-02 03:36