我使用Jquery的ajax方法进行ajax访问,使用httpHandlers拦截请求到指定类进行处理: public void CheckValidateCode(object parm)
{
object validatecode = HttpContext.Current.Session["Code"];
string result = "0";
if (validatecode != null)
{
string[] parms = (string[])parm;
if (validatecode.ToString() == parms[0])
{
result = "1";
}
}
HttpContext.Current.Response.Write(result);
}然而这里的HttpContext.Current.Session为null,抛出错误未将对象引用到实例,然后我这样做: public class ValidateCode : System.Web.SessionState.IRequiresSessionState
{
public void CheckValidateCode(object parm)
{
object validatecode = HttpContext.Current.Session["validateCode"];
string result = "0";
if (validatecode != null)
{
string[] parms = (string[])parm;
if (validatecode.ToString() == parms[0])
{
result = "1";
}
}
HttpContext.Current.Response.Write(result);
}
}仍然Session为null。后来再这样改:
public class ValidateCode :System.Web.UI.Page
{
public void CheckValidateCode(object parm)
{
object validatecode = HttpContext.Current.Session["validateCode"];
string result = "0";
if (validatecode != null)
{
string[] parms = (string[])parm;
if (validatecode.ToString() == parms[0])
{
result = "1";
}
}
HttpContext.Current.Response.Write(result);
}
}仍然为null。请问怎样才能在类中访问Session呢?Web.Config配置为:<sessionState mode="InProc" timeout="20"></sessionState>
{
object validatecode = HttpContext.Current.Session["Code"];
string result = "0";
if (validatecode != null)
{
string[] parms = (string[])parm;
if (validatecode.ToString() == parms[0])
{
result = "1";
}
}
HttpContext.Current.Response.Write(result);
}然而这里的HttpContext.Current.Session为null,抛出错误未将对象引用到实例,然后我这样做: public class ValidateCode : System.Web.SessionState.IRequiresSessionState
{
public void CheckValidateCode(object parm)
{
object validatecode = HttpContext.Current.Session["validateCode"];
string result = "0";
if (validatecode != null)
{
string[] parms = (string[])parm;
if (validatecode.ToString() == parms[0])
{
result = "1";
}
}
HttpContext.Current.Response.Write(result);
}
}仍然Session为null。后来再这样改:
public class ValidateCode :System.Web.UI.Page
{
public void CheckValidateCode(object parm)
{
object validatecode = HttpContext.Current.Session["validateCode"];
string result = "0";
if (validatecode != null)
{
string[] parms = (string[])parm;
if (validatecode.ToString() == parms[0])
{
result = "1";
}
}
HttpContext.Current.Response.Write(result);
}
}仍然为null。请问怎样才能在类中访问Session呢?Web.Config配置为:<sessionState mode="InProc" timeout="20"></sessionState>
HttpContext.Current.Session["validateCode"];
是不是null;
你的访问方式没错,可是也得有地方写入了这个session后而且每过期,你才能这样访问;
写入session可以在这里看:
http://msdn.microsoft.com/en-us/library/ms178581.aspx
不过也有可能是AJAX本身的机制造成的。你尝试用COOKIE应该可以解决这个问题
那么必然有
void ProcessRequest(HttpContext context)这个方法
在这里的上下文对象context的Session是已经实例化过了的
context.Session[""]