当前位置:编程学习 > C#/ASP.NET >>

一般处理程序中的sessio调用问题

  我在一般处理程序中写了这样的代码:
   public void ProcessRequest(HttpContext context)
    {
        ……        
        context.Session["ValidCode"]=strVlidCode;
        ……
    }

 将字符串保存到了session中以便调用,但是调用的时候出了问题
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (txtValidCode.Text.ToUpper().Equals(Session["ValidCode"].ToString().ToUpper()))
        {
            
            bool bFlag = new DataClass().isUserExist(txtUserName.Text, txtPwd.Text);
            if (bFlag)
            {
                Response.Write("<script>alert('欢迎" + txtUserName.Text + "登录')</script>");
            }
            else
            {
                Response.Write("<script>alert('用户名或密码错误,请重新输入!')</script>");
            }
        }
        else
        {
            Response.Write("<script>alert('验证码输入错误,请重新输入!')</script>");
        }
    }
}
  这个if语句中的session调用不成功,系统提示,未将对象引用设置到对象的实例。
 请大虾们帮忙解决一下,谢谢。 --------------------编程问答--------------------

using System.Web.SessionState; 

public class MyAshx : System.Web.SessionState.IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
   //your code here
}
}
--------------------编程问答-------------------- http://www.cnblogs.com/toad/archive/2009/08/28/1555722.html
参考一下这个,在一般处理程序中使用session需要做特殊的配置 --------------------编程问答--------------------  if (txtValidCode.Text.ToUpper().Equals(Session["ValidCode"].ToString().ToUpper()))
  {
给这局代码前加一句话:HttpContext context=Session["ValidCode"];
然后比较
if (txtValidCode.Text.ToUpper().Equals(context)
  {
--------------------编程问答-------------------- strVlidCode  为 Null? --------------------编程问答-------------------- strVlidCode 好像是null,用二楼的方法,在一般处理程序中没有再提示有上述的错误,一点提交那个按钮,到了if判断那里的session又开始提示同样的问题了。 --------------------编程问答-------------------- 加个判断,
if(context.Session["ValidCode"]!=null)
{
Session["ValidCode"].tostring().ToUpper()
}   --------------------编程问答-------------------- 看清楚!
null 没有 ToUpper()方法 --------------------编程问答-------------------- httpif(context.Session["ValidCode"]!=null)
{
Session["ValidCode"].tostring().ToUpper()
}  --------------------编程问答-------------------- 好像是Session["ValidCode"]从一般处理程序中没有获得过来值,加上if(context.Session["ValidCode"]!=null)
{
Session["ValidCode"].tostring().ToUpper()

这个判断之后,点击提交重新回到页面,如何将那个一般处理程序中的session值获得过来,不让判断句里的session为空呢,大虾们,帮忙解决一下。先谢谢啦,我调这个程序就session这里出问题了,很郁闷的。 --------------------编程问答-------------------- 加个判断,
if(context.Session["ValidCode"]!=null)
{
response.writeend("JS返回上一步骤");
}  --------------------编程问答-------------------- 你ValidCode为空就返回前一页面呗 --------------------编程问答-------------------- 我的目的不是让session的值为空,我的目的是让if里的语句运行。 --------------------编程问答-------------------- Session["ValidCode"]一为空,通过那个判断,下面的语句就不运行了。 --------------------编程问答-------------------- 小女子不才,为什么要在方法里面加个参数HttpContext context    Session不是当前会话对象,只要直接使用了就可以了么??  而且随便存个值进去都能获取到啊
--------------------编程问答--------------------
引用 12 楼 yanyan0207 的回复:
我的目的不是让session的值为空,我的目的是让if里的语句运行。
strValidate这个参数为null  --------------------编程问答--------------------
引用 6 楼 guozhaoyou1 的回复:
加个判断,
if(context.Session["ValidCode"]!=null)
{
.....if(...) 
     {}

     else
     {}
}


里面再写上你里面的if循环  这样子不行吗? --------------------编程问答--------------------
引用 14 楼 hutao0456 的回复:
小女子不才,为什么要在方法里面加个参数HttpContext context Session不是当前会话对象,只要直接使用了就可以了么?? 而且随便存个值进去都能获取到啊


我也觉得既然用了session为什么还要用context.session 来保存呢?直接用难道不行? --------------------编程问答-------------------- 不知道楼主这个问题解决了没有,偶也遇到了,和你的问题完全一样,不是不能引用Context中Session而是前面的Session根本就不传过来。
--------------------编程问答-------------------- 一般处理程序调用session要添加using指令的using System.Web.SessionState;
 public class AddShouChang : IHttpHandler,IRequiresSessionState  --------------------编程问答--------------------
引用 19 楼 sunny_yu 的回复:
一般处理程序调用session要添加using指令的using System.Web.SessionState;
 public class AddShouChang : IHttpHandler,IRequiresSessionState

一般处理程序中的上下文对象Context中有Session,问题在于这个Session中取不到前面页面传过来的Session值 --------------------编程问答-------------------- 在一般处理程序的文件中要加上using System.Web.SessionState;的命名空间,同时,在ValidCode这个类中要加个IRequiresSessionState接口就ok了,public class ValidCode : IHttpHandler, IRequiresSessionState。 --------------------编程问答-------------------- 各位呀,前几天我才刚解决这个问题,楼主采纳我的吧
如果不像下面这么做,session本身就是null值,更不用说session["user"]这样的了
红色部分是关键
using System;
using System.Collections.Generic;
using System.Web;
using xinchenModels;
using System.Web.Services;//这句是关键
using System.Web.SessionState;//这句是关键
public class UserLogin : IHttpHandler,IRequiresSessionState //这句是关键
    {
        [WebMethod(EnableSession=true)]//这句是关键
        public void ProcessRequest(HttpContext context)
        {
            string UserName = context.Request.Form["UserName"];
            if (UserName == null || UserName=="")
            {
                context.Response.Redirect("Error.aspx?Info='用户名为空!'");
                context.Response.End();
            }
            string PassWord = context.Request.Form["PassWord"];
            if (PassWord == null || PassWord == "")
            {
                context.Response.Redirect("Error.aspx?Info='密码为空!'");
                context.Response.End();
            }
            Models.User.UserModel u=Models.User.Sevrice.getUserModel(UserName, PassWord);
            if (u==null)
            {
                context.Response.Redirect("Error.aspx?Info='用户名或密码错误,登录失败!'");
                context.Response.End();
            }
            context.Session.Add("User", u);
            string returnURL = context.Request.Form["returnURL"];
            if (returnURL == null)
            {
                context.Response.Redirect("Success.aspx?Info='登录成功!'");
            }
            else
            {
                context.Response.Redirect(returnURL);
            }

        } --------------------编程问答-------------------- 楼上正解,顶!!!!!!!!!!
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,