The GC shouldn't be collecting the stream from the service, but it's not impossible and would certainly explain the observed behavior.
We might be able to fix this by explicitly putting the results of the service into a memorystream.
using(var theStream = new MemoryStream(req.GetResponse().GetResponseStream())
{
XmlReaderSettings settings = new XmlReaderSettings { IgnoreWhitespace = true};
using (XmlReader xmlReader = XmlReader.Create(theStream,settings))
{
}
}
This eliminates possible issues with the stream on your side. If you're still seeing issues there are 2 other likely possibilities:
1. Plain-Old Latency
2. Inefficiencies in the web service.