首页 新闻 会员 周边 捐助

C# 关于一般处理程序中获取session的问题,获取为空,但已添加相关引用了

0
[已解决问题] 解决于 2015-09-07 08:32

需要在一般处理程序中获取一个前一页面的值,利用session传递,按照网上的教程,添加了引用和接口,大致代码如下

<%@ WebHandler Language="C#" Class="UploadHandler" %>

using System;
using System.Web;
using System.IO;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.SessionState;

public class UploadHandler : IHttpHandler,IRequiresSessionState
{
    int fileMaxSize =50* 1024 * 1024;//单位为B
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Charset = "utf-8";
        HttpPostedFile file = context.Request.Files[0];
        //string uploadPath = HttpContext.Current.Server.MapPath(@context.Request["folder"]) + "\\";
        string UserName = context.Session["UName"].ToString();

已经添加了using System.Web.SessionState;IRequiresSessionState接口,但还是提示获取到的为空,有人遇到过相似的问题吗,求大神解决

问题补充:

前一页面设置的session值

调试时

梦夜月的主页 梦夜月 | 初学一级 | 园豆:14
提问于:2015-09-06 10:28
< >
分享
最佳答案
0

终于找到原因了,“是因为上传文件的部分是用flash上传文件的后台处理类,flash和后台交互的时候会重新分配ASP.NET_SessionId.导致页面会话和flash会话ID不同。所以会被认为是两个不同的浏览器请求,自然session不同,无法取到值“。

后来用IE测试后却一切正常。

感谢那位热心的网友,也感谢各位的热心解答。

不过查了好多资料后发现也有解决方案,发现很复杂,很复杂,正在慢慢学习,消化中

再次感谢各位。

梦夜月 | 初学一级 |园豆:14 | 2015-09-07 08:30
其他回答(4)
0

谁知道你的这个Session是在哪儿赋值的?

顾晓北 | 园豆:10898 (专家六级) | 2015-09-06 10:32

已补充

支持(0) 反对(0) 梦夜月 | 园豆:14 (初学一级) | 2015-09-06 10:35

@梦夜月: 貌似原来好多人都是因为存完Session就跳转遇到了你这样的问题。。你网上找一下吧。。。

支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2015-09-06 10:48

@顾晓北: 好吧

支持(0) 反对(0) 梦夜月 | 园豆:14 (初学一级) | 2015-09-06 10:49
0

HttpContext.Current.Session["UName"];

✎﹏ℳ๓₯㎕ღ | 园豆:1499 (小虾三级) | 2015-09-06 11:09

还是为空

支持(0) 反对(0) 梦夜月 | 园豆:14 (初学一级) | 2015-09-06 11:22
0

有可能是在给Session赋值的时候,没赋值进去,你调试一下赋值给session,看那是不是赋了为null的值进去

Opiece | 园豆:195 (初学一级) | 2015-09-06 20:31
0

1.你是先给session赋值后再取得吧?

2.判断context.Session["UName"]是否为空,如果不为空,可以调试一下看看值是什么;

火悬崖 | 园豆:434 (菜鸟二级) | 2015-09-07 08:18

不是,是登陆后设置的缓存,调试时前面一切正常

支持(0) 反对(0) 梦夜月 | 园豆:14 (初学一级) | 2015-09-07 08:19

@梦夜月: 可以在这之前判断context.Session["UName"]是否为空

 

if(context.Session["UName"]==null)

{//在这打断点

 

}

支持(0) 反对(0) 火悬崖 | 园豆:434 (菜鸟二级) | 2015-09-07 08:24

@火悬崖: 这个之前调试过了,是跳到else部分,获取的值为空

支持(0) 反对(0) 梦夜月 | 园豆:14 (初学一级) | 2015-09-07 08:26

@梦夜月: 值为空?

这个存的时候是什么,调试了吗?

支持(0) 反对(0) 火悬崖 | 园豆:434 (菜鸟二级) | 2015-09-07 08:29

@火悬崖: 这是后来测试时添加的,正常时是从登陆时设置的缓存,已经找到原因了,也很感谢你的热心帮助

支持(0) 反对(0) 梦夜月 | 园豆:14 (初学一级) | 2015-09-07 08:31

@梦夜月: 能请教一下是什么原因吗?谢谢

支持(0) 反对(0) 火悬崖 | 园豆:434 (菜鸟二级) | 2015-09-07 08:33

@火悬崖: 刚找到的 http://www.cnblogs.com/fumj/archive/2012/11/30/2795990.html

支持(0) 反对(0) 梦夜月 | 园豆:14 (初学一级) | 2015-09-07 08:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册