我使用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>

解决方案 »

  1.   

    你先看
    HttpContext.Current.Session["validateCode"];
    是不是null;
    你的访问方式没错,可是也得有地方写入了这个session后而且每过期,你才能这样访问;
    写入session可以在这里看:
    http://msdn.microsoft.com/en-us/library/ms178581.aspx
      

  2.   

    IHttpHandler, IRequiresSessionState你实现这两个接口
      

  3.   

    有没有写进去 session 的值呀,要弄清楚页面执行的顺序。  
    不过也有可能是AJAX本身的机制造成的。你尝试用COOKIE应该可以解决这个问题
      

  4.   

    public class ClassNameHandler : IHttpHandler, IRequiresSessionState2楼正解
      

  5.   

    你如果是实现IHttpHandler这个类,2楼的两个接口
    那么必然有
    void ProcessRequest(HttpContext context)这个方法
    在这里的上下文对象context的Session是已经实例化过了的
    context.Session[""]
      

  6.   

    你看下是不是你的机子把cookie禁用了,如果你确实往Session里面写东西了的话,肯定是能够取出来的。看下工具栏下-internet选项-隐私