请问如何从IHttpHandler中获取session状态?

ljhyp_cn 2006-04-09 11:26:05
问题发自web系统的权限认证.
首先系统session值是通过页面session.add(key,obj)写入的.

第一个方案是:在每个page页面上继承一个自定义的基类,该自定义的基类继承自system.web.ui.page.
通过基类获取http的session中的值,并进行相应的验证.在这个方案中获得session失败.仔细检查并确认代码无误后放弃.请问这个方案是不是原理上错误.

第二个方案:采用实现IHttpHandler接口,从public void ProcessRequest(HttpContext context)方法的参数context中获取session.同样是失败.请问这个方案在哪里失败呢.是不是也是原理上错误.

请高手门帮帮忙?


...全文
320 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
awuzi 2007-01-29
  • 打赏
  • 举报
回复
1、先引用System.Web.SessionState 这个命名空间,
2、如果是要在HttpHandler 中读取Session的内容,就要在实现IHttpHandler 的类中同时实现IReadOnlySessionState 这个接口。
3、如果是要在HttpHandler 中读写Session的内容,就要在实现IHttpHandler 的类中同时实现IRequiresSessionState

这样就可以在自定义的HttpHandler 中正常的使用Session了。
http://www.utf.com.cn/article/s590
popcorn 2006-06-24
  • 打赏
  • 举报
回复
yourClass : System.Web.IHttpHandler,IRequiresSessionState
ljhyp_cn 2006-04-09
  • 打赏
  • 举报
回复
是是
menuvb 2006-04-09
  • 打赏
  • 举报
回复
using System;
using System.Web;
using System.Web.SessionState;

public class DownloadHandler : IHttpHandler, IReadOnlySessionState
{
public bool IsReusable { get { return true; } }

public void ProcessRequest(HttpContext ctx)
{
ctx.Response.Write(ctx.Session["fred"]);
}
}
cat_hsfz 2006-04-09
  • 打赏
  • 举报
回复
因为IHttpHandler默认没有实现IRequiresSessionState这个标记接口,所以对于这个调用方HttpContext不会提供Session。Page就是同时实现了IHttpHandler和IRequiresSessionState。

62,075

社区成员

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

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

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

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