IIS 上で HTTP/3 と共に ASP.NET Core を使用する
作成者: Chris Ross
HTTP/3 は、次の IIS シナリオでの ASP.NET Core で完全にサポートされます。
- インプロセス
- アウトプロセス アウトプロセスでは、IIS からクライアントへの応答には HTTP/3 が使用されますが、Kestrel サーバーへのリバース プロキシ接続では HTTP/1.1 が使用されます。
インプロセス ホスティング モデルとアウトプロセス ホスティング モデルの詳細については、「IIS の ASP.NET Core モジュール (ANCM)」を参照してください。
次の要件も満たしている必要があります。
- Windows Server 2022 / Windows 11 以降。
https
URL バインドが使用されている。- EnableHttp3 レジストリ キーが設定されている。
インプロセスの展開の場合、HTTP/3 接続が確立されると、HttpRequest.Protocol
によって HTTP/3
が報告されます。 アウトプロセスの展開の場合、HTTP/3 接続が確立されると、HttpRequest.Protocol
によって HTTP/1.1
が報告されます。それが IIS で Kestrel への要求をプロキシする方法だからです。
Alt-Svc
HTTP/3 は、alt-svc
ヘッダーを介して HTTP/1.1 または HTTP/2 からのアップグレードとして検出されます。 これは、最初の要求では HTTP/3 に切り替える前に、通常 HTTP/1.1 または HTTP/2 が使用されることを意味します。 IIS によって alt-svc
ヘッダーは自動的に追加されないため、アプリケーションで追加する必要があります。 次のコードは、alt-svc
応答ヘッダーを追加するミドルウェアの例を示しています。
app.Use((context, next) =>
{
context.Response.Headers.AltSvc = "h3=\":443\"";
return next(context);
});
上記のコードを要求パイプラインの早い段階に配置します。
IIS では、HTTP/3 が使用可能であることをクライアントに通知するために、応答ヘッダーではなく AltSvc HTTP/2 プロトコル メッセージの送信もサポートされています。 EnableAltSvc レジストリ キーに関するページを参照してください。 これには、IP アドレスではなくホスト名を使用する netsh sslcert バインドが必要です。
HTTP/3 は、次の IIS 展開シナリオでの ASP.NET Core でサポートされます。
- インプロセス
- アウトプロセス アウトプロセスでは、IIS からクライアントへの応答には HTTP/3 が使用されますが、Kestrel サーバーへのリバース プロキシ接続では HTTP/1.1 が使用されます。
インプロセス ホスティング モデルとアウトプロセス ホスティング モデルの詳細については、「IIS の ASP.NET Core モジュール (ANCM)」を参照してください。
次の要件も満たしている必要があります。
- Windows Server 2022 / Windows 11 以降。
https
URL バインドが使用されている。- EnableHttp3 レジストリ キーが設定されている。
インプロセスの展開の場合、HTTP/3 接続が確立されると、HttpRequest.Protocol
によって HTTP/3
が報告されます。 アウトプロセスの展開の場合、HTTP/3 接続が確立されると、HttpRequest.Protocol
によって HTTP/1.1
が報告されます。それが IIS で Kestrel への要求をプロキシする方法だからです。
Alt-Svc
HTTP/3 は、alt-svc
ヘッダーを介して HTTP/1.1 または HTTP/2 からのアップグレードとして検出されます。 これは、最初の要求では HTTP/3 に切り替える前に、通常 HTTP/1.1 または HTTP/2 が使用されることを意味します。 IIS によって alt-svc
ヘッダーは自動的に追加されないため、アプリケーションで追加する必要があります。 次のコードは、alt-svc
応答ヘッダーを追加するミドルウェアの例を示しています。
app.Use((context, next) =>
{
context.Response.Headers.AltSvc = "h3=\":443\"";
return next(context);
});
上記のコードを要求パイプラインの早い段階に配置します。
IIS では、HTTP/3 が使用可能であることをクライアントに通知するために、応答ヘッダーではなく AltSvc HTTP/2 プロトコル メッセージの送信もサポートされています。 EnableAltSvc レジストリ キーに関するページを参照してください。 これには、IP アドレスではなくホスト名を使用する netsh sslcert バインドが必要です。
ASP.NET Core
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示