HttpCompletionOption Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
HttpClient işlemlerinin, yanıt kullanılabilir olduğunda veya içerik dahil tüm yanıt iletisi okundıktan sonra tamamlandığının kabul edilmesi gerekip gerekmediğini gösterir.
public enum class HttpCompletionOption
public enum HttpCompletionOption
type HttpCompletionOption =
Public Enum HttpCompletionOption
- Devralma
Alanlar
| Name | Değer | Description |
|---|---|---|
| ResponseContentRead | 0 | İçerik de dahil olmak üzere yanıtın tamamını okuduktan sonra işlem tamamlanmalıdır. |
| ResponseHeadersRead | 1 | Yanıt kullanılabilir olduğunda ve üst bilgiler okunduktan sonra işlem tamamlanmalıdır. İçerik henüz okunmadı. |
Açıklamalar
Uyarı
Değer, HttpCompletionOption yanıt okunurken seçeneklerde belirtilen zaman aşımının HttpClient kapsamını etkiler. üzerindeki HttpClient zaman aşımı her zaman ilgili çağrılan yöntemler için bu yöntemlerin tamamlandığı/döndürdüğü noktaya kadar geçerlidir. En önemlisi, seçeneği kullanırken ResponseHeadersRead zaman aşımı yalnızca üst bilgilerin sona erdiği ve içeriğin başladığı yere kadar geçerli olur. Sunucunun durum satırını ve üst bilgileri hemen döndürmesi ancak içeriğin döndürülmesi çok uzun sürmesi durumunda içerik okuma işleminin ayrı olarak zaman aşımına uğradı olması gerekir. Bu konu özelliği için MaxResponseContentBufferSize de geçerlidir. Sınır yalnızca kullanılırken ResponseContentReaduygulanır. Aşağıda bu noktayı gösteren bir örnek verilmiştir:
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);