Ambito.NET HTTP Request Timeout non "Interruzione" sul sito di streaming continuo
ho sviluppato un wrapper per la classe Http Web Request per eseguire Gets e messaggi in un modo più semplice. Questa libreria viene utilizzata senza problemi già da più di due anni, ma oggi abbiamo affrontato uno strano problema.
C'è one website (ci vorrà un po 'per caricare), che a quanto pare, continua a far scorrere i caratteri sul frontend HTML, quindi la nostra richiesta "Get" della libreria si blocca in un loop.
diverse proprietà Timeout
Guardando il Web HTTP Request Reference troviamo che ci sono due diversi timeout
proprietà. Li stiamo usando entrambi, ma nessuno di loro sembra abortire correttamente.
- Read Write Timeout - Ottiene o imposta un timeout in millisecondi durante la scrittura o la lettura da un flusso.
- Timeout - Ottiene o imposta il valore di timeout in millisecondi per i metodi GetResponse e GetRequestStream.
Un timeout per domarli tutti
C'è un modo per impostare un "Operazione Timeout" che costringerà il flusso/collegamento smaltimento dopo un po 'di tempo pre-configurato?
alcuni esempi di codice
public class Program
{
public static void Main()
{
string url = "http://anus.io";
Console.WriteLine("Initializing Request State Object");
RequestState myRequestState = new RequestState();
// Creating Http Request
myRequestState.request = (HttpWebRequest)WebRequest.Create(url);
myRequestState.request.Method = "GET";
myRequestState.request.ReadWriteTimeout = 4000;
myRequestState.request.Timeout = 4000;
Console.WriteLine("Begining Async Request");
IAsyncResult ar = myRequestState.request.BeginGetResponse(new AsyncCallback(ResponseCallback), myRequestState);
Console.WriteLine("Waiting for Results");
ar.AsyncWaitHandle.WaitOne();
myRequestState.response = (HttpWebResponse)myRequestState.request.EndGetResponse(ar);
Console.WriteLine("Response status code = {0}", myRequestState.response.StatusCode);
}
public static void ResponseCallback (IAsyncResult asyncResult)
{
Console.WriteLine("Completed");
}
}
This Code seem to work fine, ma come faccio a leggere la risposta come stringa, dal momento che viene costantemente transmited (come il browser mostra)?
Domanda
Qual è il modo corretto di gestire siti web come questo? (Con maniglia intendo essere in grado di identificare e ignorare le situazioni in cui il server semplicemente non si fermerà la trasmissione?)