Argh... nevermind. The problem is that I closed the stream used to load the ZipFile in a completely different function:
Stream responseStream = response.GetResponseStream();
Byte buffer = Global.ReadToBuffer(responseStream, response.ContentLength);
MemoryStream memStream = new MemoryStream(buffer);
zipFile = ZipFile.Read(memStream);
//Problem, ZipFile takes a reference and expects it to remain open
How can I know when it is OK to close the memory stream if the ZipFile is going to hold a reference to it? Can we ask the ZipFile to make a copy of the data instead?