ASP.NET Core의 요청 기능

작성자 Steve Smith

애플리케이션과 미들웨어에서 요청을 처리하는 데 사용하는 HttpContext API에는 아래에 ‘기능 인터페이스’라는 추상화 계층이 있습니다. 각 기능 인터페이스는 HttpContext에 의해 노출된 기능의 세분화된 하위 집합을 제공합니다. 이러한 인터페이스는 전체 HttpContext를 구현하지 않고도 요청이 처리될 때 서버 또는 미들웨어에 의해 추가, 수정, 래핑, 대체 또는 제거될 수 있습니다. 테스트 시 모의 기능을 만드는 데도 사용할 수 있습니다.

기능 컬렉션

HttpContextFeatures 속성은 현재 요청의 기능 인터페이스 컬렉션에 대한 액세스를 제공합니다. 기능 컬렉션은 요청 컨텍스트 내에서도 변경할 수 있기 때문에, 미들웨어를 사용하여 콜렉션을 수정하고 추가 기능에 대한 지원을 추가할 수 있습니다. 일부 고급 기능은 기능 컬렉션을 통해 연결된 인터페이스에 액세스해야 사용할 수 있습니다.

기능 인터페이스

ASP.NET Core는 Microsoft.AspNetCore.Http.Features에서 여러 서버와 미들웨어가 지원하는 기능을 식별하기 위해 공유하는 다수의 공통 HTTP 기능 인터페이스를 정의합니다. 서버 및 미들웨어는 추가 기능과 함께 자체 인터페이스를 제공할 수도 있습니다.

대부분의 기능 인터페이스는 선택적인 추가 기능을 제공하고 관련 HttpContext API는 기능이 없는 경우 기본값을 제공합니다. 일부 인터페이스는 다음 콘텐츠에 필수로 표시되어 있으며, 이는 이런 인터페이스가 핵심 요청 및 응답 기능을 제공하므로 요청 처리를 위해 구현되어야 하기 때문입니다.

다음 기능 인터페이스는 Microsoft.AspNetCore.Http.Features에서 가져온 것입니다.

IHttpRequestFeature: 프로토콜, 경로, 쿼리 문자열, 헤더 및 본문을 포함하여 HTTP 요청의 구조를 정의합니다. 요청을 처리하려면 이 기능이 필요합니다.

IHttpResponseFeature: 응답의 상태 코드, 헤더 및 본문을 포함하여 HTTP 응답의 구조를 정의합니다. 요청을 처리하려면 이 기능이 필요합니다.

IHttpResponseBodyFeature: 응답 본문을 StreamPipeWriter작성하는 다양한 방법을 정의합니다. 요청을 처리하려면 이 기능이 필요합니다. 이는 IHttpResponseFeature.BodyIHttpSendFileFeature를 대체합니다.

IHttpAuthenticationFeature: 현재 요청과 연결된 항목을 보유 ClaimsPrincipal 합니다.

IFormFeature: 들어오는 HTTP 및 다중 파트 양식 제출을 구문 분석하고 캐시하는 데 사용됩니다.

IHttpBodyControlFeature: 요청 또는 응답 본문에 대해 동기 IO 작업이 허용되는지 여부를 제어하는 데 사용됩니다.

IHttpActivityFeature: 진단 수신기에 대한 Activity 정보를 추가하는 데 사용됩니다.

IHttpBufferingFeature: 요청 및/또는 응답의 버퍼링을 사용하지 않도록 설정하는 메서드를 정의합니다.

IHttpConnectionFeature: 연결 ID와 로컬 및 원격 주소 및 포트에 대한 속성을 정의합니다.

IHttpMaxRequestBodySizeFeature: 현재 요청에 허용되는 최대 요청 본문 크기를 제어합니다.

IHttpRequestBodyDetectionFeature: 요청에 본문이 있을 수 있는지를 나타냅니다.

IHttpRequestIdentifierFeature: 요청을 고유하게 식별하기 위해 구현할 수 있는 속성을 추가합니다.

IHttpRequestLifetimeFeature: 클라이언트 연결 끊김과 같이 연결을 중단하거나 요청이 조기에 종료되었는지 감지하는 지원을 정의합니다.

IHttpRequestTrailersFeature: 요청 트레일러 헤더(있는 경우)에 대한 액세스를 제공합니다.

IHttpResetFeature: HTTP/2 또는 HTTP/3과 같이 지원하는 프로토콜에 대한 재설정 메시지를 보내는 데 사용됩니다.

IHttpResponseTrailersFeature: 지원되는 경우 애플리케이션에서 응답 트레일러 헤더를 제공할 수 있도록 합니다.

IHttpSendFileFeature: 파일을 비동기적으로 보내는 메서드를 정의합니다.

IHttpUpgradeFeature: 서버가 프로토콜을 전환하려는 경우 사용할 추가 프로토콜을 지정하는 클라이언트를 허용하는 HTTP 업그레이드에 대한 지원을 정의합니다.

IHttpWebSocketFeature: 웹 소켓을 지원하기 위한 API를 정의합니다.

IHttpsCompressionFeature: HTTPS 연결을 통해 응답 압축을 사용해야 하는지 여부를 제어합니다.

IItemsFeature: 요청별 애플리케이션 상태에 대한 컬렉션을 저장 Items 합니다.

IQueryFeature: 쿼리 문자열을 구문 분석하고 캐시합니다.

IRequestBodyPipeFeature: 요청 본문을 .로 나타냅니다 PipeReader.

IRequestCookiesFeature: 요청 Cookie 헤더 값을 구문 분석하고 캐시합니다.

IResponseCookiesFeature: 응답 cookie이 헤더에 적용되는 방식을 제어합니다 Set-Cookie .

IServerVariablesFeature: 이 기능은 IIS에서 제공하는 것과 같은 요청 서버 변수에 대한 액세스를 제공합니다.

IServiceProvidersFeature: 범위가 IServiceProvider 지정된 요청 서비스에 대한 액세스를 제공합니다.

ISessionFeature: 사용자 세션을 지원하기 위한 추상화 및 ISession 정의 ISessionFactory ISessionFeatureSessionMiddleware에 의해 구현됩니다(ASP.NET Core의 세션 참조).

ITlsConnectionFeature: 클라이언트 인증서를 검색하기 위한 API를 정의합니다.

ITlsTokenBindingFeature: TLS 토큰 바인딩 매개 변수를 사용하기 위한 메서드를 정의합니다.

ITrackingConsentFeature: 사이트 활동 및 기능과 관련된 사용자 정보의 스토리지에 대한 사용자 동의를 쿼리, 부여 및 철회하는 데 사용됩니다.

추가 리소스