IIS의 HTTP/2에서 ASP.NET Core 사용
작성자 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
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기