Hoe gebruik ik ASP.NET Session State in een HttpHandler?

Ik heb een HttpHandler die wordt uitgevoerd op een clientpagina (cross-domein, niet op onze IIS-server, enz.) en wanneer ze op onze ingesloten link klikken, wordt de Handler op onze server geactiveerd. Tot nu toe werkt alles normaal.

Ik probeer nu het System.Web.HttpContext.Session-object te gebruiken, maar het is null. Ik denk dat het nul is omdat we geen sessie hebben totdat onze HttpHandler wordt aangeroepen? En meerdere calls naar de handler zorgen voor een nieuwe sessie per call? Als dit het geval is, heeft MS dan gewoon het Session-object uitgeschakeld bij het aanroepen van een HttpHandler? Kan iemand dit bevestigen?

Als dit het geval is, wat doet u dan om de status tussen oproepen te behouden? Een soort op SQL gebaseerd gegevensobject? Een bestand?

TIA


Antwoord 1, autoriteit 100%

Laat uw HttpHandler de interface IRequiresSessionStateimplementeren. Het zal het gebruik van de sessiestatus inschakelen.
IRequiresSessionState is te vinden in de System.Web.SessionStatenaamruimte.


Antwoord 2, autoriteit 21%

Ik denk dat je de lege interface IReadOnlySessionState moet implementeren , dus de context wordt geladen.

bewerken om toe te voegen:

Volgens het antwoord van Michael Morton kun je ook implementerenIRequiresSessionState, waarmee u ook schrijftoegang krijgt tot het Session-object


Antwoord 3, autoriteit 8%

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"]);
   }
}

Antwoord 4

probeer de huidige context te gebruiken…

System.Web.HttpContext.Current.Session

Other episodes