积极答复者
[求助] session问题

问题
-
我在程序里使用session时一定要写全路径System.Web.HttpContext.Current.Session[]不然就报以下错误
只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 <configuration>\<system.web>\<httpModules> 节中包括 System.Web.SessionStateMod 或自定义会话状态模块。
我在web.config里配置了
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20"/>
<configuration>
<system.web>
<pages enableSessionState="true" />
</system.web>
</configuration>也引用了using
可还是报错
答案
-
你的代码位置放的不对吧?
下面的例子是可以的,不要放在类的构造函数内
Code Snippetusing System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.SessionState;
///
///CommonPage 的摘要说明
///
public class CommonPage : Page
{
public CommonPage()
{
base.Load += new EventHandler(CommonPage_Load);}
private void CommonPage_Load(object sender, EventArgs e)
{HttpContext.Current.Session["Start"] = "0";
if (HttpContext.Current.Session["Start"] == null || HttpContext.Current.Session["Start"].ToString() != "1")//如果数据没有初始化
{
HttpContext.Current.Session["Start"] = "1";//数据已经初始化
HttpContext.Current.Response.Write("Not Login");
}
else
{
HttpContext.Current.Response.Write("Session = " + HttpContext.Current.Session["Start"].ToString());
}
}
}另外,你原来的判断好像有些问题,应该改为
Code Snippet如果先赋值为0,则永远会去Login,呵呵,也可能你只是测试下
if (HttpContext.Current.Session["Start"] == null || HttpContext.Current.Session["Start"].ToString() != "1")//如果数据没有初始化
{
HttpContext.Current.Session["Start"] = "1";//数据已经初始化
HttpContext.Current.Response.Write("Not Login");
}
else
{HttpContext.Current.Response.Write("Session = " + HttpContext.Current.Session["Start"].ToString());
}
全部回复
-
我的自定义类继承的是web.UI.page啊
HttpContext.Current.Session["Start"]= "0";
if (HttpContext.Current.Session["Start"] == null && HttpContext.Current.Session["Start"].ToString() != "1")//如果数据没有初始化
{
HttpContext.Current.Session["Start"]= "1";//数据已经初始化
loginPage();
}我在
HttpContext.Current.Session["Start"]= "0";
付值的时候报异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
百思不得其解
请 帮忙看看
-
你的代码位置放的不对吧?
下面的例子是可以的,不要放在类的构造函数内
Code Snippetusing System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.SessionState;
///
///CommonPage 的摘要说明
///
public class CommonPage : Page
{
public CommonPage()
{
base.Load += new EventHandler(CommonPage_Load);}
private void CommonPage_Load(object sender, EventArgs e)
{HttpContext.Current.Session["Start"] = "0";
if (HttpContext.Current.Session["Start"] == null || HttpContext.Current.Session["Start"].ToString() != "1")//如果数据没有初始化
{
HttpContext.Current.Session["Start"] = "1";//数据已经初始化
HttpContext.Current.Response.Write("Not Login");
}
else
{
HttpContext.Current.Response.Write("Session = " + HttpContext.Current.Session["Start"].ToString());
}
}
}另外,你原来的判断好像有些问题,应该改为
Code Snippet如果先赋值为0,则永远会去Login,呵呵,也可能你只是测试下
if (HttpContext.Current.Session["Start"] == null || HttpContext.Current.Session["Start"].ToString() != "1")//如果数据没有初始化
{
HttpContext.Current.Session["Start"] = "1";//数据已经初始化
HttpContext.Current.Response.Write("Not Login");
}
else
{HttpContext.Current.Response.Write("Session = " + HttpContext.Current.Session["Start"].ToString());
} -
呵呵
HttpContext.Current.Session["Start"] = "0";
我是用来测试的我已经发现来问题
我把这个判断放在了构造函数中
现在我重写了一个方法已经解决了这个问题
谢谢你百忙之中来帮我解决问题
良师益友啊
我是个新手 以后还有很多问题要请教你
现在我遇到了一个新问题就是
我在退出页
清理 session时 却获得不到值
if (HttpContext.Current.Session["Start"]== null)
{HttpContext.Current.Session["Start"] = "";
}我是把他放在这里面的
namespace Discuz.ForumPage
{
/// <summary>
/// 退出页面
/// </summary>
public class logout : BasePage
{
protected override void ShowPage()
{if (HttpContext.Current.Session["Start"]== null)
{HttpContext.Current.Session["Start"] = "";
}}