2014-10-11 25 views

cevap

16

- Daha fazla bilgi için

bu bağlantıyı bakın. Bu, bu zaman aşımının tüm async işlemi için olduğu anlamına gelir. Öte yandan

, WebRequestHandler.ReadWriteTimeout o istek akışında hem ReadTimeout ve WriteTimeout ayarlanır HttpWebRequest kopyalanır. Yani bu, akış seviyesinde bir zaman aşımıdır ve sonuçta soket seviyesi zaman aşımıdır.

Her ikisini de ayarlarsanız, işlem toplamda HttpClient.Timeout'dan fazlaysa, zaman aşımına uğrar ve akıştan bir okuma veya yazma işlemi WebRequestHandler.ReadWriteTimeout'dan daha uzun sürerse, zaman aşımı olur. Zaman aşımı istisnalarında bir fark olup olmadığından emin değilim.

+0

Bu akışlar ile ilgili olduğundan, ReadWriteTimeout 'Response.Content.ReadAsStringAsync' etkileniyor? Şu anda, "ReadAsStringAsync" açık bir zaman aşımı veya iptaline izin vermediğinden, zaman aşımından önce içeriğin okunduğundan emin olmak için 'SendAsync' i çağırırken' HttpCompletionOption.ResponseContentRead 'özelliğini kullanıyorum. WebRequestHandler, içerik akışını okuma konusunda bir zaman aşımı ayarlamamı sağlarsa, 'HttpCompletionOption.ResponseHeadersRead' kullanmak istiyorum. – iguanaman

+0

Kullanım durumunuzu açıklamadan çıkarmak biraz zor, soruyu düzenleyerek ilgili kodu yayınlayabilir misiniz? – weston

-1

System.Net.HttpClient

var client = new HttpClient(); 
client.Timeout.Add(new TimeSpan(1,0,0)); 
+0

OP, iki şey arasında ne fark olduğunu, nasıl kullanılacağını soruyor. –

+0

Üzgünüz, ben soruyorsun ... –

+0

Üzgünüz, ben senin soruyorsun yanlış ... İki tane hemen hemen aynı, ama WebRequestHandler diğer parametreleri ayarlayabilir, HttpClient.Timeout biraz daha hızlı WebRequestHandler –

1

WebRequestHandler.ReadWriteTimeout yukarıdaki gibi zaman aşımı özelliğini ayarlayabilirsiniz - alır veya bir istek yazarken veya bir sunucudan bir yanıt okurken milisaniye cinsinden bir zaman aşımı ayarlar.

HttpClient.Timeout - İstek zaman aşımına uğramadan önce beklemek için TimeSpan değerini alır veya ayarlar. İşte

, WebRequestHandlerHttpClientHandler den HTTPClient WebRequestHandler türetir üzerinde sarıcı ama genellikle sadece tam .NET mevcuttur özelliklerini ekler. Sonuç olarak, daha az şey aynı şeydir. Bir SendAsyncHttpClient.TimeoutCancellationTokenSource yerleştirilir gerçekleştirdiğinizde http://blogs.msdn.com/b/henrikn/archive/2012/08/07/httpclient-httpclienthandler-and-httpwebrequesthandler.aspx

İlgili konular