• 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);
    }
    }
    }

  • 相关阅读:
    stat函数讲解
    ptrace 人人小站
    调试器工作原理——基础篇
    open和fopen的区别:
    memset ,memcpy 和strcpy 的根本区别?
    log4j日志配置详解
    jvm调优的参数设置
    mysql的密码设置
    java基础类、接口、成员属性的修饰符
    java基础之类(包含内部类)与接口的特点
  • 原文地址:https://www.cnblogs.com/niuniu0108/p/7659848.html
Copyright © 2020-2023  润新知