Jakie są różnice między tymi klasami w ASP.NET? Jak odkryłem, nie ma związku spadkowego między tymi klasami.HttpRequest vs HttpRequestMessage vs HttpRequestBase
poniższy kod zwraca instancję HttpRequestWrapper
który is a
HttpRequestBase
i has a
HttpRequest
HttpRequestMessage request = ...;
HttpRequestBase reqBase = (request.Properties["MS_HttpContext"] as HttpContextWrapper).Request;
// do somthing with reqBase.Cookies
Wydaje się, że Microsoft chce drażnić nas podczas dotarcia cookies z HttpRequestMessage.
Czy zagwarantowane jest, że request.Properties["MS_HttpContext"]
nigdy nie będzie mieć wartości NULL?
Albo myśl, że żądanie ajax jest obsługiwane w akcji ApiController. Mogę dotrzeć do adresu IP klienta na dwa różne sposoby.
Jaka jest różnica między tymi dwoma?
Generalnie, mogę uzyskać dostęp do tych samych danych dotyczących żądań/odpowiedzi, takich jak plik cookie, nagłówek, informacje o żądającym itp. Na różne sposoby. Kiedy użyć? Czy możemy powiedzieć coś w stylu "jeśli jest to żądanie ajax, HttpRequest nie jest gwarantowane, że działa poprawnie z powodu braku czegoś, więc dla zapytania ajax powinniśmy zamiast tego używać HttpRequestMessage"?
Dodatkowe informacje na HttpRequest i HttpRequestBase: Większość metod na HttpRequestBase są wirtualne, co sprawia, że typ łatwy wyśmiewać i pośredniczący w ramach testów jednostkowych. – leojh
Czy można znaleźć oficjalne odniesienie do HttpWebRequest jest przestarzałe? Widzę tylko, że konstruktor jest wymieniony jako przestarzały, a dokumentacja wskazuje na to, że WebRequest.Create zamiast tego naprawdę nie jest zgodny z – NStuke
@NStuke, ale wydaje się, że jest to zgoda: http: // stackoverflow.com/questions/18203835/httpwebrequest-in-c-sharp-do-not-work-with-net-4-5 – Filip