HttpRequest vs HttpRequestMessage vs HttpRequestBase
quelles sont les différences entre ces classes dans ASP.NET je ne sais pas. Comme je l'ai découvert, il n'y a pas de rapport d'héritage entre ces classes.
ci-dessous le code renvoie une instance de HttpRequestWrapper
is a
HttpRequestBase
et has a
HttpRequest
HttpRequestMessage request = ...;
HttpRequestBase reqBase = (request.Properties["MS_HttpContext"] as HttpContextWrapper).Request;
// do somthing with reqBase.Cookies
il semble que Microsoft voulait nous ennuyer tout en atteignant les cookies depuis HttpRequestMessage.
Est-il garanti que request.Properties["MS_HttpContext"]
ne sera jamais nulle?
Ou penser qu'une requête ajax est géré dans un action D'ApiController. Je peux joindre IP du client de deux façons différentes.
var ip = (request.Properties["MS_HttpContext"] as HttpContextWrapper).Request.UserHostAddress
var ip = HttpContext.Current.Request.UserHostAddress
Quelle est la différence entre ces deux?
ou en général, je peux accéder aux mêmes données de requête/réponse comme le Cookie, L'en-tête, L'information du demandeur, etc. de différentes manières. Quand à utiliser? Pouvons-nous dire quelque chose comme "si C'est une requête ajax, HttpRequest n'est pas garanti de fonctionner correctement à cause du manque de quelque chose donc pour les requêtes ajax nous devrions utiliser HttpRequestMessage au lieu de cela"?
1 réponses
HttpRequest est présent sur le Page et UserControl classes comme une propriété GET-only. De même, la plupart de ses propres propriétés sont également OBTENIR uniquement (voir 1