Wie definiere ich ein aggressiveres Timeout für HttpWebRequest?

8

Innerhalb einer Portable Class Library habe ich die folgende Methode, die Daten in eine bestimmte URL schreibt. Die Methode funktioniert großartig. Ich möchte jedoch ein aggressiveres Timeout angeben (der Standardwert ist 100 Sekunden).

Wenn in der HttpWebRequest-Klasse aus der Portable Class Library keine Timeout-Eigenschaft vorhanden ist, wie kann ich sicherstellen, dass der Aufruf abgebrochen wird, wenn er länger als ein paar Sekunden dauert?

%Vor%     
Martin 12.12.2012, 10:49
quelle

2 Antworten

20

Im folgenden Code wird entweder eine HttpWebResponse oder Null zurückgegeben, wenn das Zeitlimit überschritten wurde.

%Vor% %Vor%

- BEARBEITEN -

Eine Erweiterungsmethode wäre noch besser

%Vor%

Verwendung wäre:

%Vor%

- EDIT 2 -

Eine andere Möglichkeit, es zu tun

%Vor%     
L.B 12.12.2012, 11:49
quelle
0
%Vor%

Ja, es liegt in der Verantwortung der Client-Anwendung, einen eigenen Timeout-Mechanismus zu implementieren. Sie können dies über den obigen Code tun, der das Zeitlimit setzt und die Methode ThreadPool.RegisterWaitForSingleObject verwendet. Siehe Ссылка für die vollständigen Details. Im Wesentlichen wird ein Abbruch von GetResponse, BeginGetResponse, EndGetResponse, GetRequestStream, BeginGetRequestStream oder EndGetRequestStream durchgeführt.

    
mashtheweb 12.12.2012 11:05
quelle