想要在HttpHandler(ashx文件)中訪問Session的狀態值時,需要顯式的實現一個接口 IReadOnlySessionState,示例如下:
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"]);
}
}
如果要讀寫Session的值,那麼只要實現 IRequiresSessionState 接口就可以了,這兩個接口沒有待實現的方法,可直接使用。
<%@ WebHandler Language="C#" Class="ImageCode" %>
using System;
using System.Web;
using System.Web.SessionState;
public class ImageCode : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest (HttpContext context) {
context.Session["UserID"]="1"//給Session賦值 }
public bool IsReusable {
get {
return true;
}
}
}