HttpCompletionOption Enum
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Geeft aan of HttpClient bewerkingen moeten worden beschouwd als voltooid zodra een antwoord beschikbaar is, of nadat het volledige antwoordbericht met inbegrip van de inhoud is gelezen.
public enum class HttpCompletionOption
public enum HttpCompletionOption
type HttpCompletionOption =
Public Enum HttpCompletionOption
- Overname
Velden
| Name | Waarde | Description |
|---|---|---|
| ResponseContentRead | 0 | De bewerking moet worden voltooid na het lezen van het volledige antwoord, inclusief de inhoud. |
| ResponseHeadersRead | 1 | De bewerking moet worden voltooid zodra er een antwoord beschikbaar is en headers worden gelezen. De inhoud is nog niet gelezen. |
Opmerkingen
Warning
De HttpCompletionOption waarde is van invloed op het bereik van de time-out die is opgegeven in de opties bij het HttpClient lezen van een antwoord. De time-out op de HttpClient always-out is van toepassing op de relevante aangeroepen methoden tot het punt waar deze methoden zijn voltooid/geretourneerd. Cruciaal is dat bij het gebruik van de ResponseHeadersRead optie de time-out alleen van toepassing is op de plaats waar de headers eindigen en de inhoud wordt gestart. Er moet een time-out voor de inhoudsleesbewerking worden uitgevoerd voor het geval de server onmiddellijk de statusregel en headers retourneert, maar te lang duurt om de inhoud te retourneren. Deze overweging is ook van toepassing op de MaxResponseContentBufferSize accommodatie. De limiet wordt alleen afgedwongen wanneer u deze gebruikt ResponseContentRead. Hieronder ziet u een voorbeeld waarin dit punt wordt geïllustreerd:
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);