Nguon: Microsoft Learn · .NET 8.0

Sử dụng ASP.NET Core với HTTP/3 trên IIS

Nguồn: Use ASP.NET Core with HTTP/3 on IIS

Tác giả: Chris Ross

HTTP/3 được hỗ trợ đầy đủ với ASP.NET Core trong các kịch bản IIS sau đây:

Để biết thêm thông tin về các mô hình hosting in-process và out-of-process, xem ASP.NET Core Module (ANCM) for IIS.

Các yêu cầu bổ sung cũng cần được đáp ứng:

Đối với triển khai in-process khi kết nối HTTP/3 được thiết lập, HttpRequest.Protocol báo cáo HTTP/3. Đối với triển khai out-of-process khi kết nối HTTP/3 được thiết lập, HttpRequest.Protocol báo cáo HTTP/1.1 vì đó là cách IIS proxy các yêu cầu tới Kestrel.

Alt-Svc

HTTP/3 được khám phá như một nâng cấp từ HTTP/1.1 hoặc HTTP/2 thông qua tiêu đề alt-svc. Điều đó có nghĩa là yêu cầu đầu tiên thường sẽ sử dụng HTTP/1.1 hoặc HTTP/2 trước khi chuyển sang HTTP/3. IIS không tự động thêm tiêu đề alt-svc, nó phải được thêm bởi ứng dụng. Code sau đây là một ví dụ middleware (phần mềm trung gian) thêm tiêu đề phản hồi alt-svc.

csharp
app.Use((context, next) =>
{
    context.Response.Headers.AltSvc = "h3=\":443\"";
    return next(context);
});

Đặt code trên ở đầu pipeline (đường ống) xử lý yêu cầu.

IIS cũng hỗ trợ gửi thông báo giao thức HTTP/2 AltSvc thay vì tiêu đề phản hồi để thông báo cho client rằng HTTP/3 có sẵn. Xem khóa registry EnableAltSvc. Lưu ý điều này yêu cầu các ràng buộc sslcert của netsh sử dụng tên máy chủ thay vì địa chỉ IP.