Quelle est la différence entre ces deux HttpContext.Actuel.Session et Session - asp.net 4,0
Quelle est la différence entre ces 2 codes?
HttpContext.Current.Session["myvariable"]
Session["myvariable"]
asp.net 4,0 et C# 4,0
7 réponses
Ils effectivement la même chose, en ce qu'ils accéderont aux mêmes données de Session.
la raison pour laquelle vous pouvez appeler Session
dans votre code-derrière est parce que ASP.Net les pages par défaut étendent le System.Web.UI.Page
type. Cela a un Session
propriété publique. Si vous regardez le code dans le Réflecteur, vous pouvez voir qu'il appelle simplement HttpContext.Current.Session
lui-même (par ses propres Context
propriété).
Dans d'autres classes, vous n'aurez pas accès à la propriété, mais vous pouvez utiliser HttpContext.Current.Session
pour accéder aux données de session à la place, tant que vous êtes en cours d'exécution dans le contexte d'une application web.
dans un scénario de stantard, CE sont les mêmes. La différence est que la première déclaration fonctionnera également dans des contextes statiques tels qu'une méthode Web.
Il y a une différence. La seconde (Session
) est une propriété de nombreux objets .NET, comme Page
par exemple. Donc, vous ne pouvez pas avoir accès, dans le constructeur de ces objets par exemple. Cependant, la première (HttpContext.Current.Session
), est toujours prêt et à votre disposition (bien sûr, après le chargement de la session dans le Pipeline de traitement de la demande).
Il n'y a pas de différence. Page.La Session renvoie le HttpContext.Current.Session
cela étant dit, j'ai écrit .dll agissent comme des extensions pour des applications web. Ils. les dll n'ont pas le concept de Session
. Dans ces cas, je peux accéder à la session courante de l'application web qui utilise my .dll en faisant référence à HttpContext.Current.Session
Il n'y a pas de différence. Ils sont la même chose; la deuxième forme est plus court :)
il n'y a pas de différence de comportement. Si vous utilisez du code dans votre classe personnalisée où HttpContext n'est pas directement disponible et que vous voulez accéder à la valeur de session que nous utilisons la première ligne de code, alors que la deuxième ligne est utilisée lors de l'accès à la page ou dans les classes de contrôle.
un Autre assez approfondie de la réponse de Nicolas Carey https://stackoverflow.com/a/6021261/365017
Pas tous HttpHandlers fournit l'état de session. Pour ce faire, le HttpHandler doit implémenter [l'un ou les deux?] les interfaces marqueur IRequiresSessionState ou IReadOnlySessionState.
HttpContext.Actuel.Session retourne simplement null s'il n'y a pas de session disponible.
l'implémentation par HttpApplication de la propriété Session lance une HttpException avec L'état Session du message n'est pas disponible dans ce contexte. plutôt que de retourner une référence nulle."