在维护一份比较老的代码,想改为ajax调用,然后就添加了一个一般处理程序文件,也就是以.ashx结尾的文件,一切都正常,但发现session一直为空,很奇怪

基本的代码如下:

public class GetDataSurveyPerformance : IHttpHandler
{ private string OperationTypeList = "list";
private string OperationTypeAdd = "add";
private string OperationTypeDel = "del"; public void ProcessRequest(HttpContext context)
{
HttpSessionState session = HttpContext.Current.Session;//为空,根本取不到存在Session中的数据 string sourceurl2 = context.Request.UrlReferrer.LocalPath.ToString().ToLower().Trim();
string type = context.Request.QueryString["OperationType"].ToLower().Trim();
if (sourceurl2.EndsWith("SurveyPerformanceList.aspx".ToLower().Trim()))
{
SurveyPerformanceAction(context);
}
else if (sourceurl2.EndsWith("SurveyPerformanceadd.aspx".ToLower().Trim()))
{
SurveyPerformanceAction(context);
}
}
}

最后发现,在其他页面都可以取到session中保存的内容,只有此处为空,很奇怪。经过很长时间的测试,解决方法竟然也很简单,就是还需要继承一个接口IRequiresSessionState

也就是改为如下代码就可以解决了:

public class GetDataSurveyPerformance : IHttpHandler, IRequiresSessionState//多了一个接口IRequiresSessionState
{ private string OperationTypeList = "list";
private string OperationTypeAdd = "add";
private string OperationTypeDel = "del"; public void ProcessRequest(HttpContext context)
{
HttpSessionState session = HttpContext.Current.Session;//现在不为空了,能取到存在Session中的数据 string sourceurl2 = context.Request.UrlReferrer.LocalPath.ToString().ToLower().Trim();
string type = context.Request.QueryString["OperationType"].ToLower().Trim();
if (sourceurl2.EndsWith("SurveyPerformanceList.aspx".ToLower().Trim()))
{
SurveyPerformanceAction(context);
}
else if (sourceurl2.EndsWith("SurveyPerformanceadd.aspx".ToLower().Trim()))
{
SurveyPerformanceAction(context);
}
}
}

Session为空的一种原因的更多相关文章

  1. IIS7.0 下使用Intelligencia.UrlRewriter时Session为空问题

    背景 新年伊始,本人的开发环境由Windows Server 2003 +IIS 6 升级成了 Windows Server 2008 +IIS 7,之后便着手参加新项目的开发.项目开发后期测试过程中 ...

  2. 关于NHibernate中存在于Session中实例的3种状态的简单分析

    在使用NHibernate的时候.在Session中会有3种状态. 1. 瞬时状态 (Transient) 由 new 命令开辟内存空间的对象,也就是平时所熟悉的普通对象. 如: Student st ...

  3. 导致人生失败的31种原因(转自csdn博客)

    人生的最大悲剧,就是孜孜不倦的努力却终于失败! 美国一位学者曾经分析了数千人的经历,结果是总人数的98%都是失败者.并由此归纳了人们失败的主要原因,有31种之多.当你逐项阅读它们时,要一一检查自己,以 ...

  4. MySQL乱码的几种原因

    MySQL之所以会乱码,无非是以下几种原因: 1.存进数据库之前就乱码 2.在存进数据库过程中乱码 3.存进数据库后乱码 想知道在哪里出现乱码很简单,在后台打印一下就知道了. 既然知道问题出在哪里,那 ...

  5. jQuery验证元素是否为空的两种常用方法

    这篇文章主要介绍了jQuery验证元素是否为空的两种常用方法,实例分析了两种常用的判断为空技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了jQuery验证元素是否为空的两种常用方法.分享给 ...

  6. nginx:403 forbidden 二种原因

    出现403 forbidden的两种原因:1.是缺少索引文件(index.html/inde.php):2.是权限问题 一.缺少索引文件index.html/inde.php 比如下面的配置: ser ...

  7. C#判断字符串为空的几种方法和效率判断

    C#判断字符串为空的几种方法和效率判断 string定义 1.1 string str1="":会定义指针(栈),并在内存里划一块值为空的存储空间(堆),指针指向这个空间.1.2 ...

  8. Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题 swfUpload多文件上传

    Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题(转) 我们都知道普通的文件上传是通过表单进行文件上传的,还不能达到异步上传的目的.通过使用某些技术手段,比如jqu ...

  9. 运算符关键字。数据区别大小写。日期范围。判空的两种写法。NOT IN的两种写法。IN范围可含NULL,但NOT IN值范围不能含NULL。

    比较:>,<,=,>=,<=,<>(!=) 逻辑:AND,OR,NOT 范围:BETWEEN...AND... 范围:IN,NOT IN 判空:IS NULL, I ...

随机推荐

  1. S3C3440看门狗驱动程序

    S3C3440看门狗驱动程序 http://www.cnblogs.com/lfsblack/archive/2012/09/13/2684079.html 看门狗是当CPU进入错误状态后,无法恢复的 ...

  2. Endnote X6 如何修改输出格式(output style)成为自己想要的输出格式:

    Endnote X6 如何修改输出格式(output style)成为自己想要的输出格式: (1)首先尝试在endnote output style 网站中查找: http://www.endnote ...

  3. Eclipse用法和技巧十一:分栏显示

    在编码的时候,有时候需要同时看到两个文件的代码.或者在代码走读的时候,能同时看到两个文件的代码能加快我们对代码的理解.来看看如何在eclipse中同时显示两个文件的代码.        步骤一:拖住一 ...

  4. 性能测试之LoardRunner 手动关联一

    概述: 1.什么是关联,关联的分类? 2.实例讲解 1.关联 为什么要关联?关联是应用LoadRunner进行性能测试的一项重要技能,那为什么我们要进行关联呢?当利用VuGen录制脚本时,它会拦截Cl ...

  5. iOS学习——ViewController(六)

    ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图. iOS的SDK中提供很多原生ViewControlle ...

  6. ADOConnection数据库连接池

    unit AdoconnectPool; interface uses Classes, Windows, SysUtils, ADODB, IniFiles, forms; type TADOCon ...

  7. 海美迪Q系列视频文明书

    海美迪Q系列视频文明书

  8. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

  9. android Activity切换动画效果

    为Activity设置左右进出的效果,能够通过在Mainfest.xml文件里设置主题的方式来实现.还能够使用java代码. 一.设置样式 先看看实现动画的样式: <style name=&qu ...

  10. linux 查看网络负载

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 前面的 netstat -n是netstat的命令,windo ...