Вы, похоже, используете ответ Content-Length
от сервера, который не отвечает ни одним, поэтому в результате вы используете значение по умолчанию -1 для создания массива. Это происходит со следующим исключением:
Exception thrown: 'System.ArgumentOutOfRangeException' in mscorlib.dll
An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll
Non-negative number required.
Это можно исправить, игнорируя длину содержимого, возвращаемого сервером, и считывая все данные в память до завершения ответа:
byte[] GetImage(string url)
{
Stream stream = null;
byte[] buf;
try
{
WebProxy myProxy = new WebProxy();
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
stream = response.GetResponseStream();
using (MemoryStream ms = new MemoryStream())
{
stream.CopyTo(ms);
buf = ms.ToArray();
}
stream.Close();
response.Close();
}
catch (Exception exp)
{
buf = null;
}
return (buf);
}
И для дальнейшего использования: отладка ошибок такого рода будет намного проще, если вы отобразите исключение, которое видите в своем блоке try
/ catch
, поэтому у вас есть некоторое представление о том, что это за ошибка.