Différence entre HttpContext.Demande et Demande
Quelle est la différence entre les trois ASP.NET objets:
- HttpContext.Actuel.Demande
- HttpContext.Demande
- Demande
Sont ces exactement la même chose?
Edit 1
Ces objets se comportent différemment à l'intérieur de global.asax
/global.asax.vb
et default.aspx
/default.aspx.vb
.
Edit 2
OK je vais essayer d'être précis cette fois. Lequel des énoncés suivants dois-je utiliser:
' File: global.asax
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs)
If Request.Url.Port = 80 Then
'If HttpContext.Current.Request.Url.Port = 80 Then
'If HttpContext.Request.Url.Port = 80 Then
'do something
End If
End Sub
' File: default.aspx
Public Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If Request.Url.Port = 80 Then
'If HttpContext.Current.Request.Url.Port = 80 Then
'If HttpContext.Request.Url.Port = 80 Then
'do something
End If
End Sub
Vérifier si ils sont tous égaux! HttpContext.Le courant est accessible lorsque vous code Mondial.asax.cs, mais d'autres ne sont pas disponibles.
Je veux savoir comment ces trois se comporter à l'intérieur de
Je veux savoir comment ces trois se comporter à l'intérieur de
global.asax
, global.asax.vb
, default.aspx
et default.aspx.vb
.OriginalL'auteur Salman A | 2011-04-05
Vous devez vous connecter pour publier un commentaire.
Bien:
HttpContext.Courant
est un statique propriété de retourner le courantHttpContext
pour le filHttpContext.Demande
est un instance propriété de retour à laHttpRequest
pour laHttpContext
vous l'appelez surde la Page.Demande
est une propriété d'occurrence dansPage
, en retournant leRequest
associés à la page, vous appeler (généralement implicitementthis
)Donc
HttpContext.Current.Request
utilisera à la fois des deux premières propriétés afin d'obtenir la demande associée avec le thread courant. Si vous êtes dans le fil de répondre à une demande, qui va être le même que lePage.Request
dans le sein de la page qui est en cours de rendu.Toutefois, si votre rendu coup d'envoi à un différents fil, le code s'exécute dans l'autre thread pouvez toujours obtenir à la
Request
viaPage.Request
(parce que c'est juste une propriété classique), mais il n'y aura pasHttpContext
associés avec le fil de sorteHttpContext.Current.Request
ne fonctionnerait pas.EDIT: Pour répondre aux édité question à l'échelle du globe.asax la
Request
propriété se réfère àHttpApplication.Demande
, et est probablement la meilleure approche à utiliser.HttpContext.Request
ne fonctionne pas, parce que c'est en essayant d'accéder à une propriété statique comme si elle était une propriété d'occurrence.HttpContext.Current.Request
devrait travail, en supposant que le contexte a été associée avec le fil par ce point..Request
ne s'affiche pas dans Visual Studio en tant que Propriété deHttpContext
. (par exemple, Si vous créez une instance deHttpContext
, intellesense ne sera pas vous montrerRequest
comme un bien.)Aucune idée... il faut le faire, je l'espère. Le même code de la compilation lorsque vous tapez au clavier?
Je v eedited ma question. S'il vous plaît examiner, merci. @Joel: même problème avec intellisense.
Pas de. (Je pense que vous avez répondu à une "mauvaise" version de mon commentaire que j'ai accidentellement soumis avant il a été fait. Voir modifier.) N'apparaît pas sur les instances de
HttpContext
. par exemple,HttpContext x = null;
VS devez traiterx
comme une instance deHttpContext
autant que intellesense. Aussi, ne pas la listeRequest
dans le navigateur d'objet non plus.Je peux généraliser ce et d'en faire une question distincte. J'ai trouvé ce genre de chose avant.
OriginalL'auteur Jon Skeet
Ils sont tous les mêmes. Il y a tout simplement différents raccourcis intégrés dans les cours, vous êtes en héritant de Contrôleur et de la Page.
OriginalL'auteur mroach