一般处理程序中的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调用不成功,系统提示,未将对象引用设置到对象的实例。
请大虾们帮忙解决一下,谢谢。 --------------------编程问答--------------------
--------------------编程问答-------------------- http://www.cnblogs.com/toad/archive/2009/08/28/1555722.html
using System.Web.SessionState;
public class MyAshx : System.Web.SessionState.IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
//your code here
}
}
参考一下这个,在一般处理程序中使用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不是当前会话对象,只要直接使用了就可以了么?? 而且随便存个值进去都能获取到啊
--------------------编程问答-------------------- strValidate这个参数为null --------------------编程问答--------------------
里面再写上你里面的if循环 这样子不行吗? --------------------编程问答--------------------
我也觉得既然用了session为什么还要用context.session 来保存呢?直接用难道不行? --------------------编程问答-------------------- 不知道楼主这个问题解决了没有,偶也遇到了,和你的问题完全一样,不是不能引用Context中Session而是前面的Session根本就不传过来。
--------------------编程问答-------------------- 一般处理程序调用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