It would seem you are relying on the lifetime of an object you do not control (properties of the HttpRequest object). If you wish to store the data of the stream it would be safer to copy that data immediately to a byte array or similar
you could change AddStream to
public string AddStream(Stream stream, string filename)
{
if (string.IsNullOrEmpty(filename))
{
return null;
}
string fileExt = Path.GetExtension(filename).ToLower();
string fileName = Guid.NewGuid().ToString();
var strLen = Convert.ToInt32(stream.Length);
var strArr = new byte[strLen];
stream.Read(strArr, 0, strLen);
//you will need to change the type of streams acccordingly
this.streams.Add(filename,strArr);
}
you can then use the array when you need the data of the stream which gives you complete control of the lifetime of the object the data is stored in