HttpCompletionOption Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Indica si las operaciones de HttpClient deben considerarse completadas tan pronto como haya disponible una respuesta, o después de leer todo el mensaje de respuesta, incluido el contenido.
public enum class HttpCompletionOption
public enum HttpCompletionOption
type HttpCompletionOption =
Public Enum HttpCompletionOption
- Herencia
Campos
| Nombre | Valor | Description |
|---|---|---|
| ResponseContentRead | 0 | La operación debe completarse después de leer toda la respuesta, incluido el contenido. |
| ResponseHeadersRead | 1 | La operación debe completarse en cuanto haya una respuesta disponible y se lean los encabezados. El contenido aún no se lee. |
Comentarios
Advertencia
El HttpCompletionOption valor afecta al ámbito del tiempo de espera especificado en las HttpClient opciones al leer una respuesta. El tiempo de espera en siempre HttpClient se aplica a los métodos invocados pertinentes hasta el punto en el que esos métodos se completan o devuelven. Fundamentalmente, al usar la ResponseHeadersRead opción , el tiempo de espera solo se aplica hasta donde finalizan los encabezados y el contenido se inicia. La operación de lectura de contenido debe agotarse el tiempo de espera por separado en caso de que el servidor devuelva rápidamente la línea de estado y los encabezados, pero tarda demasiado tiempo en devolver el contenido. Esta consideración también se aplica a la MaxResponseContentBufferSize propiedad . El límite solo se aplica cuando se usa ResponseContentRead. A continuación se muestra un ejemplo que ilustra este punto:
using var httpClient = new HttpClient();
httpClient.Timeout = TimeSpan.FromSeconds(30);
httpClient.MaxResponseContentBufferSize = 1_000; // This will be ignored
// Because we're specifying the ResponseHeadersRead option,
// the 30-second timeout applies only up until the headers are received.
// It does not affect future operations that interact with the response content.
using HttpResponseMessage response = await httpClient.GetAsync(
"http://localhost:12345/",
HttpCompletionOption.ResponseHeadersRead);
// Do other checks that don't rely on the content first, like status code validation.
response.EnsureSuccessStatusCode();
// Since the HttpClient.Timeout will not apply to reading the content,
// you must enforce it yourself, for example by using a CancellationTokenSource.
using var cancellationSource = new CancellationTokenSource(TimeSpan.FromSeconds(15));
// If you wish to enforce the MaxResponseContentBufferSize limit as well,
// you can do so by calling the LoadIntoBufferAsync helper first.
await response.Content.LoadIntoBufferAsync(1_000, cancellationSource.Token);
// Make sure to pass the CancellationToken to all methods.
string content = await response.Content.ReadAsStringAsync(cancellationSource.Token);