通用处理程序中的会话

时间:2012-03-10 16:48:00

标签: c# asp.net session handler

我有以下简单的处理程序(为vissibilty sakes删除了一些代码,但是下面的代码仍然失败)

<%@ WebHandler Language="C#" Class="DownloadHandler" %>
using System;
using System.Web;

public class DownloadHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        if (context.Session["t1"] != "true")
        {

        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

if (context.Session["t1"] != "true")失败,&#34;对象引用未设置为对象的实例。&#34;而且我不明白为什么会这样?

1 个答案:

答案 0 :(得分:11)

那是因为对于http处理程序来说,为了访问Session,您需要明确地实现IRequiresSessionState接口。

请记住,如果这样做会在会话对象上隐式锁定,并且您将无法同时处理同一会话状态中的多个处理程序。

还有IReadOnlySessionState接口以及只读会话状态访问。