ho risolto creando una classe di nome involucro WebStreamWithLenght (la cercano metodo non è implementato perché non ho bisogno)
si dovrebbe usare in questo modo
WebRequest req = HttpWebRequest.Create(link);
WebResponse res = req.GetResponse();
var stream = res.GetResponseStream();
var streamWithLenght = new WebStreamWithLenght(stream, res.ContentLength);
public class WebStreamWithLenght : Stream
{
long _Lenght;
Stream _Stream;
long _Position;
public WebStreamWithLenght(Stream stream, long lenght)
{
_Stream = stream;
_Lenght = lenght;
}
public override bool CanRead
{
get { return _Stream.CanRead; }
}
public override bool CanSeek
{
get { return true; }
}
public override bool CanWrite
{
get { return _Stream.CanWrite; }
}
public override void Flush()
{
_Stream.Flush();
}
public override long Length
{
get { return _Lenght; }
}
public override long Position { get; set; }
public override int Read(byte[] buffer, int offset, int count)
{
var result = _Stream.Read(buffer, offset, count);
Position += count;
return result;
}
public override long Seek(long offset, SeekOrigin origin)
{
throw new NotImplementedException();
}
public override void SetLength(long value)
{
_Lenght = value;
}
public override void Write(byte[] buffer, int offset, int count)
{
Write(buffer, offset, count);
}
}
fonte
2012-10-01 11:12:16
ho fatto un test in PHP in cui Ho impostato la lunghezza del contenuto ([codice su pastebin] (http://pastebin.com/CX7imFKr)), non sono sicuro se l'ho fatto bene, e ho ancora un flusso non desiderato ... hmm ... Proverò un vero download, forse da download.com più tardi ... –
Il flusso 'WebResponse.GetResponseStream' non è ricercabile. È un flusso di sola lettura, di sola lettura. Ma l'intestazione 'ContentLength', se impostata, è generalmente affidabile. Non dovresti cercare. –