You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/core/extensions/httpclient-http3.md
+3-4Lines changed: 3 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,6 @@ HTTP/3 and QUIC both have several benefits compared to HTTP/1.1 and HTTP/2:
17
17
- Supports transitioning between networks. This feature is useful for mobile devices where it's common to switch between WIFI and cellular networks as a mobile device changes location. Currently, HTTP/1.1 and HTTP/2 connections fail with an error when switching networks. An app or web browser must retry any failed HTTP requests. HTTP/3 allows the app or web browser to seamlessly continue when a network changes. <xref:System.Net.Http.HttpClient> and Kestrel don't support network transitions in .NET 7. It may be available in a future release.
18
18
19
19
> [!IMPORTANT]
20
-
>
21
20
> Apps configured to take advantage of HTTP/3 should be designed to also support HTTP/1.1 and HTTP/2. If issues are identified in HTTP/3, it's recommend disabling HTTP/3 until the issues are resolved in a future release of .NET.
22
21
23
22
## HttpClient settings
@@ -29,7 +28,7 @@ The HTTP version can be configured by setting `HttpRequestMessage.Version` to 3.
29
28
30
29
## Platform dependencies
31
30
32
-
HTTP/3 uses QUIC as its transport protocol. The .NET implementation of HTTP/3 uses [MsQuic](https://github.com/microsoft/msquic) to provide QUIC functionality. As a result, .NET support of HTTP/3 depends on MsQuic platform requirements, which are documented in[QUIC Platform dependencies](../../fundamentals/networking/quic/quic-overview.md#platform-dependencies). If the platform that HttpClient is running on doesn't have all the requirements for HTTP/3, then it's disabled.
31
+
HTTP/3 uses QUIC as its transport protocol. The .NET implementation of HTTP/3 uses [MsQuic](https://github.com/microsoft/msquic) to provide QUIC functionality. As a result, .NET support of HTTP/3 depends on MsQuic platform requirements. For more information on how to install **MsQuic**, see[QUIC Platform dependencies](../../fundamentals/networking/quic/quic-overview.md#platform-dependencies). If the platform that HttpClient is running on doesn't have all the requirements for HTTP/3, then it's disabled.
33
32
34
33
## Using HttpClient
35
34
@@ -54,11 +53,11 @@ Alternatively, you can call <xref:System.AppContext.SetSwitch%2A?displayProperty
54
53
55
54
The reason for requiring a configuration flag for HTTP/3 is to protect apps from future breakage when using version policy `RequestVersionOrHigher`. When calling a server that currently uses HTTP/1.1 and HTTP/2, if the server later upgrades to HTTP/3, the client would try to use HTTP/3 and potentially be incompatible as the standard isn't final and therefore may change after .NET 6 is released.
56
55
57
-
.NET 6 is only compatible with the 1.9.x versions of libmsquic. Libmsquic 2.x isn't compatible with .NET 6 due to breaking changes in the library. Libmsquic receives updates to 1.9.x when needed to incorporate security fixes.
56
+
.NET 6 is only compatible with the 1.9.x versions of libmsquic. Libmsquic 2.x isn't compatible with .NET 6 due to breaking changes in the library. Libmsquic receives updates to 1.9.x when needed to incorporate security fixes.
58
57
59
58
## HTTP/3 Server
60
59
61
-
HTTP/3 is supported by ASP.NET with the Kestrel server in .NET 6 (preview) and .NET 7 (fully supported). For more information, see [use HTTP/3 with the ASP.NET Core Kestrel web server][http3Kestrel].
60
+
HTTP/3 is supported by ASP.NET with the Kestrel server in .NET 6 (as a preview) and .NET 7 (is fully supported). For more information, see [use HTTP/3 with the ASP.NET Core Kestrel web server][http3Kestrel].
Copy file name to clipboardExpand all lines: docs/fundamentals/networking/quic/quic-overview.md
+46-9Lines changed: 46 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,6 +34,8 @@ From the implementation perspective, `System.Net.Quic` depends on [MsQuic](https
34
34
35
35
## Platform dependencies
36
36
37
+
The following sections describe the platform dependencies for QUIC in .NET.
38
+
37
39
### Windows
38
40
39
41
- Windows 11, Windows Server 2022, or later. (Earlier Windows versions are missing the cryptographic APIs required to support QUIC.)
@@ -42,20 +44,55 @@ On Windows, msquic.dll is distributed as part of the .NET runtime, and no other
42
44
43
45
### Linux
44
46
45
-
All the following dependencies are stated in the `libmsquic` package manifest and are automatically installed by the package manager:
47
+
> [!NOTE]
48
+
> .NET 7+ is only compatible with 2.2+ versions of libmsquic.
46
49
47
-
- OpenSSL 3+ or 1.1 - depends on the default OpenSSL version for the distribution version, for example, OpenSSL 3 for [Ubuntu 22](https://packages.ubuntu.com/jammy/openssl) and OpenSSL 1.1 for [Ubuntu 20](https://packages.ubuntu.com/focal/utils/openssl).
50
+
The `libmsquic` package is required on Linux. This package is published in Microsoft's official Linux package repository, <https://packages.microsoft.com>. You must add this repository to your package manager before installing the package. For more information, see [Linux Software Repository for Microsoft Products](/linux/packages).
48
51
49
-
- libnuma 1
52
+
> [!CAUTION]
53
+
> Adding the Microsoft pacakge repository may conflict with your distribution's repository when your distribution's repository provides .NET and other Microsoft packages. To avoid or troubleshoot package mixups, review [Troubleshoot .NET errors related to missing files on Linux](../../../core/install/linux-package-mixup.md#whats-going-on).
50
54
51
-
On Linux, libmsquic is published via Microsoft's official Linux package repository, <https://packages.microsoft.com>. To consume libmsquic, you must add it manually. For more information, see [Linux Software Repository for Microsoft Products](/windows-server/administration/linux-package-repository-for-microsoft-software). After configuring the package feed, it's installed via the package manager of your distro, for example, for Ubuntu:
55
+
##### Examples
52
56
53
-
```bash
54
-
sudo apt install libmsquic
55
-
```
57
+
Here are some examples of using a package manager to install `libmsquic`:
56
58
57
-
> [!NOTE]
58
-
> .NET 7 is only compatible with 2.2+ versions of libmsquic.
59
+
-**APT**
60
+
61
+
```bash
62
+
sudo apt-get libmsquic
63
+
```
64
+
65
+
-**APK**
66
+
67
+
```bash
68
+
sudo apk add libmsquic
69
+
```
70
+
71
+
-**DNF**
72
+
73
+
```bash
74
+
sudo dnf install libmsquic
75
+
```
76
+
77
+
-**zypper**
78
+
79
+
```bash
80
+
sudo zypper install libmsquic
81
+
```
82
+
83
+
-**YUM**
84
+
85
+
```bash
86
+
sudo yum install libmsquic
87
+
```
88
+
89
+
##### Dependencies of libmsquic
90
+
91
+
All the following dependencies are stated in the `libmsquic` package manifest and are automatically installed by the package manager:
92
+
93
+
- OpenSSL 3+ or 1.1 - depends on the default OpenSSL version for the distribution version, for example, OpenSSL 3 for [Ubuntu 22](https://packages.ubuntu.com/jammy/openssl) and OpenSSL 1.1 for [Ubuntu 20](https://packages.ubuntu.com/focal/utils/openssl).
0 commit comments