programing

HttpRequest 대 HttpRequestMessage 대 HttpRequestBase

showcode 2023. 6. 9. 22:12
반응형

HttpRequest 대 HttpRequestMessage 대 HttpRequestBase

ASP.NET에서 이러한 클래스의 차이점은 무엇입니까?내가 발견한 바와 같이 이 클래스들 사이에는 상속 관계가 없습니다.

아래 코드는 다음의 인스턴스를 반환합니다.HttpRequestWrapper어떤.is a HttpRequestBase그리고.has a HttpRequest

HttpRequestMessage request = ...;
HttpRequestBase reqBase = (request.Properties["MS_HttpContext"] as HttpContextWrapper).Request;
// do somthing with reqBase.Cookies

Microsoft는 HttpRequestMessage에서 쿠키에 접근하는 동안 우리를 성가시게 하고 싶었던 것 같습니다.

그것이 보장됩니까?request.Properties["MS_HttpContext"]절대 null이 되지 않을 것입니까?

또는 Ajax 요청이 ApiController의 작업에서 처리된다고 생각합니다.나는 두 가지 다른 방법으로 고객의 IP에 접근할 수 있습니다.

var ip = (request.Properties["MS_HttpContext"] as HttpContextWrapper).Request.UserHostAddress

var ip = HttpContext.Current.Request.UserHostAddress

이 둘의 차이점은 무엇입니까?

또는 일반적으로 쿠키, 헤더, 요청자 정보 등과 같은 동일한 요청/응답 데이터에 다른 방식으로 액세스할 수 있습니다.어떤 것을 사용해야 합니까?"Ajax 요청이라면 HttpRequest가 무언가 부족하여 제대로 작동하지 않을 것이므로 Ajax 요청에 대해 HttpRequestMessage를 대신 사용해야 합니다."와 같은 말을 할 수 있습니까?

HttpRequest페이지사용자 컨트롤 클래스에 GET 전용 속성으로 있습니다.마찬가지로 자체 속성의 대부분도 GET 전용입니다(1 참조).이 클래스는 ASP.NET 페이지에서 클라이언트 IP, 쿠키, 쿼리 문자열 읽기 등 수신 http 요청에 대한 정보를 가져오는 데 사용됩니다.중요한 것은, 그것은 "구" 시스템의 일부라는 것입니다..NET 1.1 이후로 존재해온 웹 어셈블리

그러나 HttpRequestMessage는 .NET 4.5의 새로운 기능입니다.시스템의 일부입니다.. HTTP를 통해 요청과 응답을 만들고, 보내고, 받기 위해 클라이언트와 서비스 모두에서 사용할 수 있습니다..NET 4.5에서 사용되지 않는 HttpWebRequest를 대체합니다.

HttpRequestBase 및 HttpRequestWrapper에서 제가 할 수 있는 최선은 문서를 인용하는 것입니다.

HttpRequestWrapper 클래스는 HttpRequestBase 클래스에서 파생되며 HttpRequest 클래스의 래퍼 역할을 합니다.이 클래스는 HttpRequest 클래스의 기능과 HttpRequestBase 유형을 표시합니다.HttpRequestBase 클래스를 사용하면 응용 프로그램에서 HttpRequest 클래스의 원래 구현을 ASP.NET 파이프라인 외부에서 장치 테스트를 수행하는 경우와 같은 사용자 지정 구현으로 바꿀 수 있습니다.

언급URL : https://stackoverflow.com/questions/15718468/httprequest-vs-httprequestmessage-vs-httprequestbase

반응형