如何在HttpHandler中使用ASP.NET会话状态?

我有一个HttpHandler运行在一个客户端页面(跨域,而不是我们的IIS服务器等),当他们点击我们的embedded式链接,它会触发我们的服务器上的处理程序。 到目前为止一切正常。

我现在试图使用System.Web.HttpContext.Session对象,但它是空的。 我想这是空的,因为我们没有一个会话,直到我们的HttpHandler被调用? 对处理程序的多个调用将为每个调用创build一个新的会话? 如果是这种情况,MS只是在调用HttpHandler时禁用Session对象? 任何人都可以确认吗?

如果是这种情况,你们如何保持呼叫之间的状态呢? 某种基于SQL的数据对象? 一份文件?

TIA

让你的HttpHandler实现IRequiresSessionState接口。 它将启用会话状态使用。 IRequiresSessionState可以在System.Web.SessionState命名空间中find。

我认为你必须实现空接口IReadOnlySessionState ,所以上下文将被加载。

编辑添加:

根据迈克尔·莫顿的回答,你也可以实现 IRequiresSessionState ,这会给你写访问权限的Session对象

 using System; using System.Web; using System.Web.SessionState; public class DownloadHandler : IHttpHandler, IReadOnlySessionState { public bool IsReusable { get { return true; } } public void ProcessRequest(HttpContext context) { context.Response.Write(context.Session["kmx"]); } } 

尝试使用当前的上下文…

 System.Web.HttpContext.Current.Session