Timeout-problem ved læsnig af http fra aspx
Jeg har i min .aspx følgende metode:private static string GetPageAsString(string address)
{
string result = "";
WebRequest request = WebRequest.Create(address);
request.Timeout = 2000;
using (WebResponse response = request.GetResponse())
{
StreamReader reader = new StreamReader(response.GetResponseStream());
result = reader.ReadToEnd();
}
return result;
}
Den bruger jeg til at læse en webside, som returnerer noget xml, som jeg parser (det er noget vejrdata; en 'address' repræsenterer en by, og jeg har mange byer i min web-app).
Problemet er, at hvis serveren som leverer data til mig ikke svarer (hvilket hænder fra tid til anden), så har request.Timeout INGEN effekt: Kodafviklingen stopper i MANGE sekunder, og så hænger hele min web-app.
Spørgsmål: What to do? Er der et nemt fix? Eller kan jeg evt. lave noget asynkront halløj, og i givet fald, hvordan skruer jeg det sammen? Det må meget gerne fungere på samme måde som metoden ovenfor: Returnere en streng efter en max-ventetid, og hvis ventetiden er overskredet, så bare kaste en exception.