ASP.NET的ASHX一般处理程序中Session为null且不能赋值
来源:互联网 发布:php短信接口开发实例 编辑:程序博客网 时间:2024/05/19 19:14
ASP.NET的ASHX一般处理程序中Session为null且不能赋值
做ExtJS的时候,在登录模块中死活不能保存管理员名称到Session,网上搜了一堆的解决方案,说的乱七八糟,这里归结一句话:让你的ashx文件多继承一个IRequiresSessionState即可搞定!
ASP.NET的ASHX一般处理程序中Session不能赋值,Session为Null的处理办法,废话少说,示例代码如下:
01usingSystem; 02usingSystem.Collections.Generic; 03usingSystem.Linq; 04usingSystem.Web; 05usingSystem.Web.SessionState; 06namespaceWeb.Admin.ashx 07{ 08 /// <summary> 09 /// Admin远程服务 10 /// 处理管理员的登录与退出操作 11 /// </summary> 12 publicclassAdmLog : IHttpHandler, IRequiresSessionState 13 { 14 publicvoidProcessRequest(HttpContext context) 15 { 16 context.Response.ContentType = "text/plain"; 17 stringadmName = context.Request["txtName"].Trim(); //获取用户输入的登录名 18 stringadmPwd = ZXL.MD5.GetMD5String("PWD"+ context.Request["txtPwd"]); //根据用户的输入密码得到MD5加密码 19 Maticsoft.Model.tb_Admin adm = newMaticsoft.BLL.tb_Admin().GetModel(admName); 20 if(adm != null) 21 { 22 if(admPwd.Equals(adm.aPassword)) 23 { 24 System.Web.HttpContext.Current.Session["Admin"] = adm.aName; //保存管理员名称到Session会话 25 context.Response.Write("{success:true}"); 26 context.Response.End(); 27 } 28 } 29 context.Response.Write("{success:false,msg:'您输入的登录名或密码错误 ! '}"); 30 } 31 32 publicboolIsReusable 33 { 34 get35 { 36 returnfalse; 37 } 38 } 39 } 40}特别注意:上面只修改了一处,即public class AdmLog : IHttpHandler, IRequiresSessionState{} 让你的ashx一般处理程序文件多继承了IRequiresSessionState。
解决问题后的一点儿分析:
分析摘自“第一滴泪”的新浪博客。http://blog.sina.com.cn/s/blog_4a8009260100e347.html 谢谢~~~~
一.问题描述:
最近需要做一个对特定请求(.report)进行响应的接口,当然是使用实现IHttpHandler来进行处理,实现IHttpHandler接口就必须要实现它的两个方法,ProcessRequest(HttpContext context) 和IsRunable() ,看到在ProcessRequest(HttpContext context) 中有个HttpContext的输入参数,以为通过这个就可以对所有的服务器对象进行使用。不过问题出现了,在这个自定义HTTP响应处理类中,对于Request和Response都可以通过使用HttpContext来引用使用,不过Session 就是不行,总是出现对象未进行引用的错误!
二.解决办法:
通过上网查资料,却无意中发现在自定义HTTPHANDLER中使用SESSION 的方法!
1、先引用System.Web.SessionState这个命名空间,
2、如果是要在HttpHandler中读取Session的内容,就要在实现IHttpHandler的类中同时实现IReadOnlySessionState这个接口。
3、如果是要在HttpHandler中读写Session的内容,就要在实现IHttpHandler的类中同时实现IRequiresSessionState
这样就可以在自定义的HttpHandler 中正常的使用Session了。
转自:http://www.dearboy.net/html/2011/107.html
- ASP.NET的ASHX一般处理程序中Session为null且不能赋值
- ASP.NET的ASHX一般处理程序中Session为null且不能赋值
- ASP.NET的ASHX一般处理程序中Session为null且不能赋值
- ASP.NET的ASHX一般处理程序中Session为null且不能赋值
- asp.net .ashx一般处理程序中使用session
- asp.net .ashx一般处理程序中使用Session
- 在ashx一般处理程序文件中不能使用session和request的问题解决办法
- ASP.NET ASHX 一般处理程序教程
- ASP.NET ASHX 一般处理程序教程
- ASP.NET ASHX 一般处理程序教程
- C#网站一般处理程序(ashx)中session的问题
- 网上看到的 asp.net 一般处理程序(.ashx)
- .NET中一般处理程序(ashx)的使用
- 为什么*.ashx一般处理程序不能访问Session值?
- 为什么*.ashx一般处理程序不能访问Session值?
- Asp.net jQuery与ashx 安全性问题 (一般处理程序的安全问题) ashx 安全
- Asp.net jQuery与ashx 安全性问题 (一般处理程序的安全问题) ashx 安全
- asp.net c# 在一般处理程序中不能获取Session值
- ubuntu Apache2 如何 设置 HTTPS
- 快速排序
- Linux 网络编程及底层实现过程
- TIME_WAIT状态原理
- Java基础学习第五章之面向对象上
- ASP.NET的ASHX一般处理程序中Session为null且不能赋值
- 关于跨应用读取程序的SharedPreferences
- 求本年第几天
- TortoiseSVN设置自动锁定功能
- python中的urlencode与urldecode
- hdu 4427
- 将ocx和DLL文件打包成cab文件,实现IE浏览器在线安装
- Javascript_14_DOM_radio练习
- 为什么标准C++中两个直接字符串常量不能相加