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);
}
}
}
C#一般处理程序设置和读取session(session报错“未将对象引用设置到对象的实例”解决)的更多相关文章
- IIS报错 未将对象引用设置到对象的实例。
在vs中运行正常的项目 ,发布到IIS总是提示 未将对象引用设置到对象的实例. 运行静态页面 html正常,只是打开.aspx页面的时候报错,在确保了数据库,配置,权限均正常的情况下. 错误原因:先安 ...
- asp.net 中Session的运用,及抛出错误“未将对象引用设置到对象的实例”
1. 页面载入后,必须要等到page_Load方法执行建立 page对象后才可以使用Session 2. 在.aspx和.cs文件中使用Session的区别 (1).aspx: Session[&qu ...
- HttpContext.Current.Session[strName]未将对象引用设置到对象的实例
项目开发是在4.5.1上,不知道为啥客户提供的服务器上安装的是4.5,差别不大也没去升级,然后部署MVC的时候web.config报错 <system.web> <compilati ...
- 一般处理程序中使用Session出现未将对象引用设置到对象的实例
遇到问题:未将对象引用设置到对象的实例 那就在你的一般处理程序中加入红色背景的代码吧 using System; using System.Collections.Generic; using Sys ...
- ashx文件中使用session提示“未将对象引用设置到对象的实例”
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;u ...
- 2014-08-26 解决HttpContext.Current.Session在ashx文件中出现“未将对象引用设置到对象的实例”的问题
今天是在吾索实习的第35天. 最近在使用HttpContext.Current.Session来获取Session["..."]的值时,常常会弹出错误——“未将对象引用设置到对象的 ...
- WPF中未将对象引用设置到对象的实例
前几天,我开始了WPF的基础学习,一上来我就遇到了一个令我头痛的问题,按照书上的例子我写了一段属于自己的代码,一个简单的色调器.满心期待的编译运行,就出现了未将对象引用设置到对象的实例.我在网上查阅了 ...
- 出现"未将对象引用设置到对象的实例“问题的总结
今天做机房收费系统时,将DataGridView中的数据导入到Excel中,当运行到这一句代码”xlApp.Cells(rows + 2, j + 1) = DataGridView1(j, rows ...
- 报警提示 System.NullReferenceException:“未将对象引用设置到对象的实例。
System.NullReferenceException:“未将对象引用设置到对象的实例.是就因为Session在记录到服务器时,没有添加 IRequiresSessionState 所以运行时回 ...
随机推荐
- express 创建项目
express 创建项目: 1.熟悉express命令 2.创建模板 3.安装组件
- 史上最全Redis面试题及答案。
花了大量时间整理了这套Redis面试题 首发50题,绝无仅有,从入门到精通 从基础,高级知识点,再到集群,运维,方案- 弄明白了这些题可以说可以成为面霸了 面试官都得折服,Redis学得怎么样,都来检 ...
- 2018今日头条湖北省赛【D】
[题目链接]https://www.nowcoder.com/acm/contest/104/C 不知道这题为啥没过.队友现场推的都是对的..233333好像代码写的有问题,下来就很恼火. 题意大概就 ...
- java获得磁盘、网络实时I/O速率
最近项目中需要一个平台硬件资源的监控模块,当时采用了Sigar中api,但是做到针对磁盘和网络的实时I/O速率的时候发现Sigar并没有直接支持的接口.于是……它就诞生了.底层采用C++编写,通过ja ...
- 2019-8-31-dotnet-非泛型-类型-System.Collections.IEnumerable-不能与类型实参一起使用
title author date CreateTime categories dotnet 非泛型 类型 System.Collections.IEnumerable 不能与类型实参一起使用 lin ...
- 【学术篇】SDOI2010 古代猪文
这里可能包含传送门 又双叒叕数论大杂烩... 定理什么我都不会证 题目很长很啰嗦 但是题意很显然... 化完式子之后就是这么个东东:\(G^{\sum_{k|n}C_k^{\frac{n}{k}}}\ ...
- JedisCluster获取key所在的节点
JedisCluster获取key所在的节点 2019年11月9日17:34:55 准备 引入jedis的jar包,这个jar包里面包含了JedisCluster,可以用它来操作集群. <dep ...
- this 、typeof、false、parseInt()、this、arguments、Array和object判断
typeof typeof (undefined) 不会报错 undefined object Number boolean function String 返回值为字符串类型 false .fals ...
- Windows中的"簇"和Linux中的"块"是对应的
扇区是对硬盘而言,块是对文件系统而言. 簇”又称为“分配单元” ,文件系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT 16/32/NTFS)打开文 ...
- Qt Creator配置
1.安装Git sudo apt install git 2.配置Git 用户和邮箱: git config --global user.name "xxx" git config ...