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 HttpRequestWrapperis aHttpRequestBase et has aHttpRequest

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"?

42
demandé sur Mehmet Ataş 2013-03-30 16:22:11

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