HttpCompletionOption Enum
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Anger om HttpClient åtgärder ska anses slutförda antingen så snart ett svar är tillgängligt eller efter att du har läst hela svarsmeddelandet inklusive innehållet.
public enum class HttpCompletionOption
public enum HttpCompletionOption
type HttpCompletionOption =
Public Enum HttpCompletionOption
- Arv
Fält
| Name | Värde | Description |
|---|---|---|
| ResponseContentRead | 0 | Åtgärden bör slutföras när hela svaret har lästs, inklusive innehållet. |
| ResponseHeadersRead | 1 | Åtgärden bör slutföras så snart ett svar är tillgängligt och rubrikerna läss. Innehållet är inte läst än. |
Kommentarer
Warning
Värdet HttpCompletionOption påverkar omfånget för tidsgränsen HttpClient som anges i alternativen när du läser ett svar. Tidsgränsen för gäller HttpClient alltid för de relevanta anropade metoderna fram till den punkt där metoderna slutförs/returneras. När du använder ResponseHeadersRead alternativet gäller tidsgränsen endast där rubrikerna slutar och innehållet börjar. Innehållsläsningsåtgärden måste överskridas separat om servern omedelbart returnerar statusraden och rubrikerna, men det tar för lång tid att returnera innehållet. Detta gäller även för egenskapen MaxResponseContentBufferSize . Gränsen tillämpas bara när du använder ResponseContentRead. Nedan visas ett exempel som illustrerar den här punkten:
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);