zoukankan      html  css  js  c++  java
  • C#一般处理程序设置和读取session(session报错“未将对象引用设置到对象的实例”解决)

    登陆模块时,用到了session和cookie。在一般处理程序中处理session,一直报错。最后找到问题原因是需要调用 irequiressessionstate接口。

    在ashx文件中,设置session直接用

    HttpContext.Current.Session["UserCode"] = usercode
    会报“未将对象引用设置到对象的实例”错误。搜索到很多资料说没有判断session对象是否存在,我是设置session对象,自然不是因为这个错误的。通过查找资料看到http://www.cnblogs.com/tonysuen/archive/2010/12/07/1899595.html   的博文,修改了代码,调用了接口,完成了登陆功能。

    ashx文件中使用session需要using System.Web.SessionState;

    根据需要调用IRequiresSessionState接口(读写)或者IReadOnlySessionState(只读)

    using System;
    using System.Collections.Generic;
    using System.Web;
    using DMS;
    using System.Data.SqlClient;
    using System.Data;
    using System.Text;
    using System.Web.SessionState;


    // 调用IRequiresSessionState接口
    public class login1 : IHttpHandler, IRequiresSessionState
    {
    public void ProcessRequest(HttpContext context)
    {
    context.Response.ContentType = "text/plain";
    string usercode = context.Request["usercode"].ToString();
    string type = context.Request["type"].ToString();
    string fun = context.Request["fun"].ToString();
    switch (fun)
    {
    case "checkUser":
    string pwd = context.Request["pwd"].ToString();
    checkUser(type, usercode, pwd, context);
    break;
    default:
    break;
    }
    }

    //验证用户信息(用户名和密码)
    public void checkUser(string type, string usercode, string pwd, HttpContext context)
    {
    string res = "";
    string sql = @"select count(1) from " + type + " t where t.usercode='" + usercode + "'
    and t.userpwd ='" + pwd + "' ";
    try
    {
    DataTable dt = sqlCon.getDt(sql);
    string count = dt.Rows[0][0].ToString();
    if (count == "1")
    {
    //如果有数据,则设置session
    HttpContext.Current.Session["UserCode"] = usercode;
    HttpContext.Current.Session["type"] = type;
    HttpContext.Current.Session["UserPwd"] = pwd;
    res = "ok";
    }
    else
    {
    res = "er";
    }
    }
    catch (Exception e)
    {
    res = "checkUser__" + e.ToString();
    }
    finally
    {
    context.Response.Write(res);
    }
    }
    }

  • 相关阅读:
    使用JavaScript发布订阅设计模式实现Ajax请求节流
    浏览器获取鼠标光标坐标
    JavaScript正则表达式
    git 入门以及git客户端的常用命令
    Chrome 开发者工具的使用介绍
    CSS3动画的使用以及优化
    移动的自适应方法
    新手如何编写测试用例
    Python接口测试入门
    MySQL的基本语句(一)
  • 原文地址:https://www.cnblogs.com/niuniu0108/p/7659848.html
Copyright © 2011-2022 走看看