在维护一份比较老的代码,想改为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. ASP.NET - 使用MqSql数据库

    1. 首先需要安装mysql, 脚本之家下载地址: http://www.jb51.net/softs/2193.html 或者去mysql.com官网都可以,一路next,安装好后,有个简单配置,提 ...

  2. ASP.NET - Eval数据绑定

    <!--新闻分类--> <div id ="category" class ="Frm"> <h4>新闻分类</h4& ...

  3. Delphi中多标签页面的实现

    unit uMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  4. C#中System.Globalization.DateTimeFormatInfo.InvariantInfo怎么用

    原文  C#中System.Globalization.DateTimeFormatInfo.InvariantInfo怎么用 在开发的时候,碰到下面这样一个问题: 在程序中显示当前系统时间,但是有一 ...

  5. 最新OpenCV2.4.6与VS2010开发环境搭建

    OpenCV2.4.6与VS2010开发环境搭建 由于很久没有用OpenCV了,之前用的是1.0版本和VC++6.0.现在已经到了VS2010+OpenCV2.4.6.安装使用之后,发现OpenCV的 ...

  6. Android来电监听

    本文实现来电自动接听,自动录音,自动回拨功能. public class MainActivity extends Activity { @Override protected void onCrea ...

  7. View实现涂鸦、撤销以及重做功能

    import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...

  8. Android中View绘制优化二一---- 使用<include />标签复用布局文件

    本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning   译二:   使用<include />标签复用布局文件      翻译地址:http://de ...

  9. ABAP文件上传下载 用SMW0

    以excel举例 smw0事物代码进入传输模板到服务器上: 下载模板的用到的from代码如下: FORM sub_chek_directory . DATA: l_formkey1 LIKE wwwd ...

  10. 一种根据URL参数条件动态生成URL的方法

    最近做了一个产品列表页类似于搜索列表页, 功能比较简单,比搜索页复杂的逻辑在于,生成各个查询条件的URL.我们的链接如下: http://xxx.xxx.xxx/product/list.html?s ...