首页 新闻 会员 周边

当前上下文中不存在名称"session"

0
悬赏园豆:5 [已解决问题] 解决于 2008-05-04 04:32
<P>using System;<BR>using System.Collections;<BR>using System.Configuration;<BR>using System.Data;<BR>using System.Linq;<BR>using System.Web;<BR>using System.Web.Security;<BR>using System.Web.SessionState;<BR>using System.Web.UI;<BR>using System.Web.UI.HtmlControls;<BR>using System.Web.UI.WebControls;<BR>using System.Web.UI.WebControls.WebParts;<BR>using System.Xml.Linq;</P> <P>public partial class index : System.Web.UI.Page<BR>{<BR>&nbsp;&nbsp;&nbsp; protected void Page_Load(object sender, EventArgs e)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (<FONT color=#ff0000>session</FONT>["userName"] = null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write("你未注册或登录超时,请先注册或登录!");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(Session["userName"].ToString());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>}</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><FONT color=#ff0000>错误:当前上下文中不存在名称"session"</FONT></P> <P><FONT color=#ff0000>为啥……</FONT></P> <P>&nbsp;</P> <P>&nbsp;</P>
Michael.Z的主页 Michael.Z | 初学一级 | 园豆:200
提问于:2008-05-02 02:10
< >
分享
最佳答案
0
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
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册