HttpCompletionOption Enumeráció
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Jelzi, hogy HttpClient a műveleteket befejezettnek kell-e tekinteni, amint egy válasz elérhető, vagy a teljes válaszüzenet elolvasása után, beleértve a tartalmat is.
public enum class HttpCompletionOption
public enum HttpCompletionOption
type HttpCompletionOption =
Public Enum HttpCompletionOption
- Öröklődés
Mezők
| Name | Érték | Description |
|---|---|---|
| ResponseContentRead | 0 | A műveletnek a teljes válasz elolvasása után kell befejeződnie, beleértve a tartalmat is. |
| ResponseHeadersRead | 1 | A műveletnek azonnal be kell fejeződnie, amint a válasz elérhető, és a fejlécek beolvasva lesznek. A tartalom még nem olvasható. |
Megjegyzések
Warning
Az HttpCompletionOption érték befolyásolja a válasz olvasásakor megadott időtúllépés hatókörét.HttpClient Az időtúllépés mindig HttpClient a megfelelő meghívott metódusokra vonatkozik egészen addig a pontig, amíg ezek a metódusok befejeződnek/vissza nem térnek. Döntő fontosságú, hogy a ResponseHeadersRead beállítás használatakor az időtúllépés csak arra a pontra vonatkozik, ahol a fejlécek befejeződnek, és a tartalom elindul. A tartalomolvasási műveletet külön kell időzíteni, ha a kiszolgáló azonnal visszaadja az állapotsort és a fejléceket, de túl sokáig tart a tartalom visszaadása. Ez a szempont a MaxResponseContentBufferSize tulajdonságra is vonatkozik. A korlátot csak akkor kényszeríti ki a rendszer, ha a következőt használja ResponseContentRead: . Az alábbiakban egy példa szemlélteti ezt a pontot:
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);