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

Helen_Chai 2011-06-23 12:05:30
查过很多资料, .ashx 有继承 IRequiresSessionState, ASP State Service 也开了,enablesessionstate 也true了

到第二个.aspx页面 session就为null了,郁闷..

.ashx
HttpContext.Current.Session["count"] = 12;

.aspx
HttpContext.Current.Session["count"] 为null
报: 未将对象引用设置到对象的实例


跪谢先了
...全文
558 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
洪生鹏 2012-08-22
  • 打赏
  • 举报
回复
http://www.hongshengpeng.com/article/show/47.aspx
lzc_a 2012-08-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
谢谢大家的帮助,我的情况是,后来在要传输对象的类里加了[Serializable] 就好了
唉,终于可以继续往前走了
[/Quote]

楼主能否说详细点,我也遇到了相同的问题。我的情况是:我通过.ashx来验证登录,同时将用户的信息存在session中,然后页面会跳到main.aspx上去,那个页面要显示用户名,我调试的时候发现,取的session ID和我存的不一致。。。。求解决
qzyunfei1 2011-10-26
  • 打赏
  • 举报
回复
你先在aspx页面中随便声明个别的session就不会了
孟子E章 2011-06-23
  • 打赏
  • 举报
回复
1,可能服务器的配置导致了Session的丢失。如使用多个Web园
2,配置文件中 <sessionState mode="InProc" />此处设置的是什么模式?
3,使用方法是否存在问题,你可以这样测试
public void ProcessRequest (HttpContext context) {
context.Session["count"] = "12";
context.Response.Redirect("test.aspx");
}
renyiqiu 2011-06-23
  • 打赏
  • 举报
回复
这方面的经验不多,不过帮LZ找了篇总结Session 丢失的问题总结
http://www.cnblogs.com/tonyqus/archive/2006/04/19/378904.html
看看有没有用
ggyue 2011-06-23
  • 打赏
  • 举报
回复
不懂!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Helen_Chai 2011-06-23
  • 打赏
  • 举报
回复
得不到,得不到啊,郁闷1天了...

先走.ashx,再跳到.aspx页面就为null了

头疼,头疼啊
work_fei 2011-06-23
  • 打赏
  • 举报
回复
如果session存在,.aspx.cs页面中Session["count"]应该可以得到
porschev 2011-06-23
  • 打赏
  • 举报
回复

继承了IRequiresSessionState应该就能得到了

aspx.cs文件中

Session["count"] 得不到?

未将对象引用到实例????

你这个页面是先走的.ashx。。。还是先走的.aspx.cs ???

打个断点看看
danjiewu 2011-06-23
  • 打赏
  • 举报
回复
如果你用State Server,那么session里保存的内容必须是可序列化的
coszhl 2011-06-23
  • 打赏
  • 举报
回复
哦,那估计你的session不是放在'InProc'的了。
Helen_Chai 2011-06-23
  • 打赏
  • 举报
回复
谢谢大家的帮助,我的情况是,后来在要传输对象的类里加了[Serializable] 就好了
唉,终于可以继续往前走了
fy_study 2011-06-23
  • 打赏
  • 举报
回复
首先你先在你的一般处理程序代码里顶部引用
using System.Web.SessionState;

然后在类名后面继承 IHttpHandler,IRequiresSessionState

这样就可以使用Session了!
HttpContext.Current.Session["UserID"] = "";

给你一个例子:

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;
}
}
}
}
  • 打赏
  • 举报
回复
Session超时和莫名丢失的处理
原因:
1.改动global.asax webconfig bin 目录里的东西,导致Web Application重启
2.有些杀毒软件会去扫描webconfig文件,也会导致Session丢失
3.服务器内存不足导致Session丢失
4.程序内部有让Session丢失的代码
5.程序有框架页面和跨域情况
解决:
1.修改webconfig中timeout的时效时间
2.建议让网站使用独立的应用程序池
3.iis设置Session超时时间(默认为20分钟)
4.在应用程序池上打开网站对应的应用程序池属性,将web数量改为1 重启iis
5.在主页里面嵌套一个框架页iframe,设置宽度高度为0.在里面的加载页面里的
<head>里面加入<meta http-equiv="refresh" content="1080">这一句,意思是每隔18分钟向服务器发送一次请求。刚好赶在Session失效之前。这样session就永不失效了

62,041

社区成员

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

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

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

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