IIS의 HTTP/2에서 ASP.NET Core 사용
참고 항목
이 문서의 최신 버전은 아닙니다. 현재 릴리스는 이 문서의 .NET 8 버전을 참조 하세요.
Important
이 정보는 상업적으로 출시되기 전에 실질적으로 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적, 또는 묵시적인 보증을 하지 않습니다.
현재 릴리스는 이 문서의 .NET 8 버전을 참조 하세요.
작성자 Justin Kotalik
HTTP/2는 다음과 같은 IIS 배포 시나리오에서 ASP.NET Core를 통해 지원됩니다.
- Windows Server 2016 이상/Windows 10 이상
- IIS 10 이상
- TLS 1.2 이상 연결
- Out of Process를 호스팅하는 경우: 공용 에지 서버 연결은 HTTP/2를 사용하지만 Kestrel 서버에 대한 역방향 프록시 연결은 HTTP/1.1을 사용합니다.
In-Process 배포에서 HTTP/2 연결이 설정된 경우 HttpRequest.Protocol
에서 HTTP/2
를 보고합니다. Out-of-Process 배포에서 HTTP/2 연결이 설정된 경우 HttpRequest.Protocol
에서 HTTP/1.1
을 보고합니다.
In Process 및 Out-of-Process 호스팅 모델에 대한 자세한 내용은 IIS용 ANCM(ASP.NET Core 모듈)을 참조하세요.
HTTP/2는 HTTPS/TLS 연결에서 기본적으로 사용됩니다. HTTP/2 연결이 설정되지 않은 경우 연결이 HTTP/1.1로 대체됩니다. IIS 배포가 포함된 HTTP/2 구성에 대한 자세한 내용은 IIS의 HTTP/2를 참조하세요.
gRPC를 지원하기 위한 고급 HTTP/2 기능
IIS의 추가 HTTP/2 기능은 응답 트레일러 및 초기화 프레임 전송을 위한 지원을 포함하여 gRPC를 지원합니다.
IIS에서 gRPC를 실행하기 위한 요구 사항:
- In Process 호스팅.
- Windows 11 Build 22000 이상, Windows Server 2022 Build 20348 이상.
- TLS 1.2 이상 연결
트레일러
HTTP 트레일러는 응답 본문이 전송된 후에 전송된다는 점을 제외하고 HTTP 헤더와 유사합니다. IIS 및 HTTP.sys의 경우 HTTP/2 응답 트레일러만 지원됩니다.
if (httpContext.Response.SupportsTrailers())
{
httpContext.Response.DeclareTrailer("trailername");
// Write body
httpContext.Response.WriteAsync("Hello world");
httpContext.Response.AppendTrailer("trailername", "TrailerValue");
}
앞의 예제 코드에서:
SupportsTrailers
는 응답을 위해 트레일러가 지원되는지 확인합니다.DeclareTrailer
는Trailer
응답 헤더에 지정된 트레일러 이름을 추가합니다. 응답 트레일러 선언은 선택 사항이지만 권장됩니다.DeclareTrailer
가 호출되는 경우 해당 트레일러는 응답 헤더가 전송되기 전에 있어야 합니다.AppendTrailer
는 트레일러를 추가합니다.
Reset
초기화를 사용하면 서버에서 지정된 오류 코드를 사용하여 HTTP/2 요청을 초기화할 수 있습니다. 초기화 요청은 중단된 것으로 간주합니다.
var resetFeature = httpContext.Features.Get<IHttpResetFeature>();
resetFeature.Reset(errorCode: 2);
이전 코드 예제의 Reset
은 INTERNAL_ERROR
오류 코드를 지정합니다. HTTP/2 오류 코드에 관한 자세한 내용은 HTTP/2 사양 오류 코드 섹션을 참조하세요.
ASP.NET Core