Was ist der Unterschied zwischen Sitzung und HttpContext.Current.Session-Objekt?Unterschied zwischen Sitzung und HttpContext.Current.Session
Antwort
Es gibt keinen Unterschied.
Der Getter für Page.Session gibt die Kontext-Sitzung zurück.
Nichts. Session
zeigt nur auf die HttpContext.Current.Session
.
Ein bisschen spät hier, aber hier ist etwas, das ich gerade entdeckt habe.
@Phillipe Leybaert und @CSharpAtl sind beide falsch. HttpApplication
Session
Eigenschaft zeigt ein anderes Verhalten als das der Eigenschaft HttpContext.Current.Session
. Sie werden beide eine Referenz auf die gleiche HttpSessionState
Instanz zurückgeben, wenn eins verfügbar ist. Sie unterscheiden sich in dem, was sie tun, wenn keine HttpSessionState
Instanz für die aktuelle Anfrage verfügbar ist.
Nicht alle HttpHandler
s bieten Sitzungsstatus. Um dies zu tun, muss die HttpHandler
die Markerschnittstellen IRequiresSessionState
oder IReadOnlySessionState
implementieren [eines oder beide?].
HttpContext.Current.Session
gibt einfach null
zurück, wenn keine Sitzung verfügbar ist.
Die HttpApplication
‚s Umsetzung der Session
Eigenschaft löst eine HttpException
mit der Nachricht Session state is not available in this context.
anstatt eine null
Referenz zurück.
Einige Beispiele für HttpHandler
, die keine Sitzung implementieren, sind die Standardhandler für normalerweise statische Ressourcen, z. B. Bild- und CSS-Dateien. Jede Bezugnahme auf die HttpApplication
Eigenschaft Session
in solchen Fällen (wie in global.asax
Event-Handler) wird eine HttpException
geworfen werden.
Unnötig zu sagen, die unerwartete HttpException
bietet eine WTF ?! Moment, wenn Sie es nicht erwarten.
Die Session
Eigenschaft der HttpApplication
Klasse wird so umgesetzt (von Reflector):
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public HttpSessionState Session
{
get
{
HttpSessionState session = null;
if (this._session != null)
{
session = this._session;
}
else if (this._context != null)
{
session = this._context.Session;
}
if (session == null)
{
throw new HttpException(SR.GetString("Session_not_available"));
}
return session;
}
}
Danke, dass Sie sich die Mühe gemacht haben, eine bessere Antwort zu geben. – nicodemus13
Kein Problem. Ich hatte gerade einen ziemlich nervigen WTF? Moment, der etwas Zeit in Anspruch nahm. Ich dachte mir, ich würde es dokumentieren, damit jemand anderes auf der ganzen Linie nicht die Zeit damit verbringen müsste, herauszufinden, was vor sich geht. –
- 1. Was ist der Unterschied zwischen ControllerContext.HttpContext.Session und HttpContext.Current.Session
- 2. HttpContext.Current.Session null Element
- 3. Unterschied zwischen Sitzung in Datei und in Datenbank
- 4. in IIS, was ist der Unterschied zwischen "Anwendung" und "Sitzung"?
- 5. Unterschied zwischen Mage :: Registrierung() und Sitzung in Magento
- 6. Unterschied zwischen REST und WebServices
- 7. Unterschied zwischen Vorzeichen & und *?
- 8. VBA: Unterschied zwischen & und +
- 9. Unterschied zwischen "**/* /" und "** /"?
- 10. Unterschied zwischen $ # und $ {# @}
- 11. Unterschied zwischen = und: =
- 12. Unterschied zwischen '#', '%' und '$'
- 13. MySQL: Unterschied zwischen ', `,' und '
- 14. C++ Unterschied zwischen '//' und '///'
- 15. Unterschied zwischen String.Empty und ""
- 16. Unterschied zwischen `% in%` und `==`
- 17. Unterschied zwischen numpy.logical_and und &
- 18. Unterschied zwischen. und #
- 19. Unterschied zwischen // und http: //
- 20. Spring MVC - Unterschied zwischen HttpSession.setAttribute und model.addObject
- 21. Unterschied zwischen NetworkStream.Read() und NetworkStream.BeginRead()?
- 22. HttpContext.Current.Session vs Context.Session
- 23. HttpContext.Current.Session ist null + OWIN
- 24. HttpContext.Current.Session ist Null in Ashx-Datei
- 25. Unterschied zwischen Compact und Regular Größenklasse
- 26. Unterschied zwischen -Wconversion zwischen gcc und g ++
- 27. Sitzung zwischen AFNetworking und UIWebView teilen
- 28. Unterschied zwischen Wörterbuch und Hashtable
- 29. Unterschied zwischen FetchMode und FetchType
- 30. Unterschied zwischen Application_Start und Application_OnStart
Es ist zu klären wert, dass, wenn Sie sagen ‚Sitzung‘, Sie beziehen sich auf System.Web.UI.Page.Session . Das Session-Objekt ist im Kontext der ASP.NET-Seite verfügbar. – Llyle