.NET 一般处理程序中获取到的session值为空
在网上查了资料也继承了IRequiresSessionState接口,但是获取的值还是为空,后台一切正常,求高手指点...
在网上查了资料 也继承了IRequiresSessionState 接口,但是获取的值还是为空,后台一切正常,求高手指点
展开
3个回答
展开全部
.net的一般处理程序 .ashx的context对象默认是取不出session的值出来的。
要达到取出Session的效果,则需要让它实现System.Web.SessionState.IReadOnlySessionState接口(该接口没有任何方法实现,只是起到一个标识作用)
为了让所有的一般处理程序都能获取到Session值,并且能集中做一些控制管理(比如用户认证、权限控制等),我的策略是让一个抽象类实现IHttpHandler, IRequiresSessionState接口,然后让其他所有一般处理程序都继承该抽象类即可。
要达到取出Session的效果,则需要让它实现System.Web.SessionState.IReadOnlySessionState接口(该接口没有任何方法实现,只是起到一个标识作用)
为了让所有的一般处理程序都能获取到Session值,并且能集中做一些控制管理(比如用户认证、权限控制等),我的策略是让一个抽象类实现IHttpHandler, IRequiresSessionState接口,然后让其他所有一般处理程序都继承该抽象类即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是用flash上传文件的后台处理类?flash和后台交互的时候会重新分配ASP.NET_SessionId.导致页面会话和flash会话ID不同。所以会被认为是两个不同的浏览器请求,自然session不同,即无法取到值。
追问
嗯 是flash文件上传类,请问有没有其他解决方法呢?
追答
有两种方式:
1 、不做flash上传的时候的访问限制。
2 、在服务端Session判空并创建之前,将传递过来的SessonID强制赋给当前请求的Cookies,这样服务端就认为还是原来的Session传递过来了。
你可以参考一下这个链接:
http://www.cnblogs.com/fumj/archive/2012/11/30/2795990.html
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以用google浏览器调试一下,看客户端是否有session,一般情况下,你继承了IRequiresSessionState接口,再获取cookie是没有问题的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询