跪求:session丢失问题 (.ashx存session, .aspx取不到)

GengWH 2014-04-16 10:26:15
直接看代码:
using System.Web.SessionState;

[Serializable]
public class FilesUpLoad : IHttpHandler, IRequiresSessionState {
我在ashx 页面里面 将session 存放在:context.Session.Add("photoGraphyFile", listInfo);
},问题是在aspx.cs文件中:Session["photoGraphyFile"] =null;
这是什么原因呢?!急死了。试了好多方法,都取不到

...全文
506 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
cphackers 2014-04-18
  • 打赏
  • 举报
回复
引用 30 楼 pengqian098 的回复:
楼主其实可以考虑票证,我个人觉得比Session好用。
你说的是凭证服务认证
跳动de指尖 2014-04-17
  • 打赏
  • 举报
回复
楼主其实可以考虑票证,我个人觉得比Session好用。
Justin-Liu 2014-04-16
  • 打赏
  • 举报
回复
设置默认浏览器? 那即是说,这种情况session只支持默认的浏览器
  • 打赏
  • 举报
回复
cphackers 2014-04-16
  • 打赏
  • 举报
回复
我也遇到这个问题了,handler继承了IRequiresSessionState, IReadOnlySessionState 这两个接口,但是获取session,还是要报错,在本地开发测试是好的,发布到服务器上就出问题了,百思不得其解啊
Justin-Liu 2014-04-16
  • 打赏
  • 举报
回复
引用 18 楼 GengWH 的回复:
[quote=引用 7 楼 FoxDave 的回复:] [quote=引用 2 楼 GengWH 的回复:] [quote=引用 1 楼 FoxDave 的回复:] ashx的context和aspx的page对象 是一个?
恩。是的,我在这个page上边放了一个按钮,调用一个ashx的一个方法,把我需要的数据放到session中取去,然后再page的另一个按钮事件中取session中的值.[/quote] 参考[/quote] 晕死,换了个IE浏览器可以了。用的谷歌的不行。有办法解决么?![/quote] 这个就够呛能解决了,浏览器的机制不同
GengWH 2014-04-16
  • 打赏
  • 举报
回复
引用 7 楼 FoxDave 的回复:
[quote=引用 2 楼 GengWH 的回复:] [quote=引用 1 楼 FoxDave 的回复:] ashx的context和aspx的page对象 是一个?
恩。是的,我在这个page上边放了一个按钮,调用一个ashx的一个方法,把我需要的数据放到session中取去,然后再page的另一个按钮事件中取session中的值.[/quote] 参考[/quote] 晕死,换了个IE浏览器可以了。用的谷歌的不行。有办法解决么?!
GengWH 2014-04-16
  • 打赏
  • 举报
回复
引用 11 楼 Return_false 的回复:
web.config加,尝试加入过期时间,仅仅凭你的描述,无法判断问题出现在哪 <sessionState timeout="1800"></sessionState>
晕死,换了个IE浏览器可以了。用的谷歌的不行。
GengWH 2014-04-16
  • 打赏
  • 举报
回复
引用 15 楼 FoxDave 的回复:
[quote=引用 14 楼 GengWH 的回复:] [quote=引用 13 楼 FoxDave 的回复:] [quote=引用 12 楼 GengWH 的回复:] [quote=引用 10 楼 FoxDave 的回复:] 首先你先在你的一般处理程序代码里顶部引用 using System.Web.SessionState; 然后在类名后面继承 IHttpHandler,IRequiresSessionState 这样就可以使用Session了! HttpContext.Current.Session["UserID"] = ""; 给你一个例子: C# code
 using System;
using System.Collections;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.SessionState;

namespace WebSite.ashx
{
    
    public class F_CheckUserLogin : IHttpHandler,IRequiresSessionState
    {

        public void ProcessRequest(HttpContext ctt)
        { 
            if (ctt.Session["UserID"] == null || ctt.Session["UserID"].ToString() == "")
            {
                ctt.Response.Write("0");//未登录状态
            }
            else
            {
                ctt.Response.Write("1");//已经登录,
            }
        } 
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
我是在ashx设置好了session,在aspx页面取不到session值,类名后面已经继承 IHttpHandler,IRequiresSessionState[/quote] 第一个参考的那个也不行吗?[/quote] 让我在web.config中加个配置: <httpCookies domain="domainname.com" .... />,现在是调试阶段,没域名,添加localhost么? [/quote] 试试[/quote] 不行,晕死了。不知道咋回事
Justin-Liu 2014-04-16
  • 打赏
  • 举报
回复
引用 14 楼 GengWH 的回复:
[quote=引用 13 楼 FoxDave 的回复:] [quote=引用 12 楼 GengWH 的回复:] [quote=引用 10 楼 FoxDave 的回复:] 首先你先在你的一般处理程序代码里顶部引用 using System.Web.SessionState; 然后在类名后面继承 IHttpHandler,IRequiresSessionState 这样就可以使用Session了! HttpContext.Current.Session["UserID"] = ""; 给你一个例子: C# code
 using System;
using System.Collections;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.SessionState;

namespace WebSite.ashx
{
    
    public class F_CheckUserLogin : IHttpHandler,IRequiresSessionState
    {

        public void ProcessRequest(HttpContext ctt)
        { 
            if (ctt.Session["UserID"] == null || ctt.Session["UserID"].ToString() == "")
            {
                ctt.Response.Write("0");//未登录状态
            }
            else
            {
                ctt.Response.Write("1");//已经登录,
            }
        } 
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
我是在ashx设置好了session,在aspx页面取不到session值,类名后面已经继承 IHttpHandler,IRequiresSessionState[/quote] 第一个参考的那个也不行吗?[/quote] 让我在web.config中加个配置: <httpCookies domain="domainname.com" .... />,现在是调试阶段,没域名,添加localhost么? [/quote] 试试
GengWH 2014-04-16
  • 打赏
  • 举报
回复
引用 13 楼 FoxDave 的回复:
[quote=引用 12 楼 GengWH 的回复:] [quote=引用 10 楼 FoxDave 的回复:] 首先你先在你的一般处理程序代码里顶部引用 using System.Web.SessionState; 然后在类名后面继承 IHttpHandler,IRequiresSessionState 这样就可以使用Session了! HttpContext.Current.Session["UserID"] = ""; 给你一个例子: C# code
 using System;
using System.Collections;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.SessionState;

namespace WebSite.ashx
{
    
    public class F_CheckUserLogin : IHttpHandler,IRequiresSessionState
    {

        public void ProcessRequest(HttpContext ctt)
        { 
            if (ctt.Session["UserID"] == null || ctt.Session["UserID"].ToString() == "")
            {
                ctt.Response.Write("0");//未登录状态
            }
            else
            {
                ctt.Response.Write("1");//已经登录,
            }
        } 
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
我是在ashx设置好了session,在aspx页面取不到session值,类名后面已经继承 IHttpHandler,IRequiresSessionState[/quote] 第一个参考的那个也不行吗?[/quote] 让我在web.config中加个配置: <httpCookies domain="domainname.com" .... />,现在是调试阶段,没域名,添加localhost么?
Justin-Liu 2014-04-16
  • 打赏
  • 举报
回复
引用 12 楼 GengWH 的回复:
[quote=引用 10 楼 FoxDave 的回复:] 首先你先在你的一般处理程序代码里顶部引用 using System.Web.SessionState; 然后在类名后面继承 IHttpHandler,IRequiresSessionState 这样就可以使用Session了! HttpContext.Current.Session["UserID"] = ""; 给你一个例子: C# code
 using System;
using System.Collections;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.SessionState;

namespace WebSite.ashx
{
    
    public class F_CheckUserLogin : IHttpHandler,IRequiresSessionState
    {

        public void ProcessRequest(HttpContext ctt)
        { 
            if (ctt.Session["UserID"] == null || ctt.Session["UserID"].ToString() == "")
            {
                ctt.Response.Write("0");//未登录状态
            }
            else
            {
                ctt.Response.Write("1");//已经登录,
            }
        } 
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
我是在ashx设置好了session,在aspx页面取不到session值,类名后面已经继承 IHttpHandler,IRequiresSessionState[/quote] 第一个参考的那个也不行吗?
GengWH 2014-04-16
  • 打赏
  • 举报
回复
引用 10 楼 FoxDave 的回复:
首先你先在你的一般处理程序代码里顶部引用 using System.Web.SessionState; 然后在类名后面继承 IHttpHandler,IRequiresSessionState 这样就可以使用Session了! HttpContext.Current.Session["UserID"] = ""; 给你一个例子: C# code
 using System;
using System.Collections;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.SessionState;

namespace WebSite.ashx
{
    
    public class F_CheckUserLogin : IHttpHandler,IRequiresSessionState
    {

        public void ProcessRequest(HttpContext ctt)
        { 
            if (ctt.Session["UserID"] == null || ctt.Session["UserID"].ToString() == "")
            {
                ctt.Response.Write("0");//未登录状态
            }
            else
            {
                ctt.Response.Write("1");//已经登录,
            }
        } 
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
我是在ashx设置好了session,在aspx页面取不到session值,类名后面已经继承 IHttpHandler,IRequiresSessionState
  • 打赏
  • 举报
回复
web.config加,尝试加入过期时间,仅仅凭你的描述,无法判断问题出现在哪 <sessionState timeout="1800"></sessionState>
Justin-Liu 2014-04-16
  • 打赏
  • 举报
回复
首先你先在你的一般处理程序代码里顶部引用 using System.Web.SessionState; 然后在类名后面继承 IHttpHandler,IRequiresSessionState 这样就可以使用Session了! HttpContext.Current.Session["UserID"] = ""; 给你一个例子: C# code
 using System;
using System.Collections;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.SessionState;

namespace WebSite.ashx
{
    
    public class F_CheckUserLogin : IHttpHandler,IRequiresSessionState
    {

        public void ProcessRequest(HttpContext ctt)
        { 
            if (ctt.Session["UserID"] == null || ctt.Session["UserID"].ToString() == "")
            {
                ctt.Response.Write("0");//未登录状态
            }
            else
            {
                ctt.Response.Write("1");//已经登录,
            }
        } 
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
GengWH 2014-04-16
  • 打赏
  • 举报
回复
引用 6 楼 Return_false 的回复:
HttpContext.Current.Session["photoGraphyFile"] =listInfo;
在aspx.cs里面session 还是null
夜色镇歌 2014-04-16
  • 打赏
  • 举报
回复
context.Session也没有么。。
Justin-Liu 2014-04-16
  • 打赏
  • 举报
回复
引用 2 楼 GengWH 的回复:
[quote=引用 1 楼 FoxDave 的回复:] ashx的context和aspx的page对象 是一个?
恩。是的,我在这个page上边放了一个按钮,调用一个ashx的一个方法,把我需要的数据放到session中取去,然后再page的另一个按钮事件中取session中的值.[/quote] 参考
  • 打赏
  • 举报
回复
HttpContext.Current.Session["photoGraphyFile"] =listInfo;
  • 打赏
  • 举报
回复
context.Session["photoGraphyFile"]
加载更多回复(11)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧