На одном из мобильных сайтов я создал веб-страницу, на которой я использую веб-клиент для загрузки изображения с основного сайта (основного сайта для мобильных устройств) и изменения его размера с помощью растрового изображения, а также для передачи изображения на мобильный сайт. Путь к изображению для основного сайта работает нормально, но когда я использую WebClient для загрузки изображения, чтобы изменить его размер, я получаю следующую ошибку:
CreateThumbnail :System.Net.WebException: Unable to connect to the
remote server ---> System.Net.Sockets.SocketException: A connection
attempt failed because the connected party did not properly respond
after a period of time, or established connection failed because
connected host has failed to respond 209.59.186.108:80 at
System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot,
SocketAddress socketAddress) at
System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure,
Socket s4, Socket s6, Socket& socket, IPAddress& address,
ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout,
Exception& exception)
Может кто-нибудь предложить какое-либо решение этой проблемы, я попытался пропинговать вышеуказанный IP (209.59.186.108), используя следующую команду:
ping m.keyboardmag.com
возвращает следующие результаты:
Pinging m.keyboardmag.com [209.59.186.108] with 32 byte
Reply from 209.59.186.108: bytes=32 time=233ms TTL=112
Reply from 209.59.186.108: bytes=32 time=237ms TTL=112
Reply from 209.59.186.108: bytes=32 time=230ms TTL=112
Reply from 209.59.186.108: bytes=32 time=231ms TTL=112
по-прежнему не удается подключиться и загрузить изображение с помощью WebClient ...
************* ОБНОВЛЕНИЕ КОДА SNIPPET ************ ****
if (Request.QueryString["file"] != null)
{
string file = Request.QueryString["file"].ToString();
int lnHeight = Convert.ToInt32(Request.QueryString["height"]);
int lnWidth = Convert.ToInt32(Request.QueryString["width"]);
string imgUrl = Request.QueryString["file"].ToString();
Bitmap bmpOut = null;
try
{
Bitmap loBMP;
WebClient wb = new WebClient();
byte[] ret = wb.DownloadData(imgUrl);
MemoryStream ms = new MemoryStream(ret);
loBMP = new Bitmap((Stream)ms);
System.Drawing.Imaging.ImageFormat loFormat = loBMP.RawFormat;
decimal lnRatio;
int lnNewWidth = 0;
int lnNewHeight = 0;
//-----If the image is smaller than a thumbnail just return it As it is-----
if ((loBMP.Width < lnWidth && loBMP.Height < lnHeight))
{
lnNewWidth = loBMP.Width;
lnNewHeight = loBMP.Height;
}
if ((loBMP.Width > loBMP.Height))
{
lnRatio = (decimal)lnHeight / loBMP.Height;
lnNewHeight = lnHeight;
decimal lnTemp = loBMP.Width * lnRatio;
lnNewWidth = (int)lnTemp;
if (lnNewWidth > 128)
{
lnNewWidth = 128;
}
/*
lnRatio = (decimal)lnWidth / loBMP.Width;
lnNewWidth = lnWidth;
decimal lnTemp = loBMP.Height * lnRatio;
lnNewHeight = (int)lnTemp;*/
}
else
{
lnRatio = (decimal)lnHeight / loBMP.Height;
lnNewHeight = lnHeight;
decimal lnTemp = loBMP.Width * lnRatio;
lnNewWidth = (int)lnTemp;
if (lnNewWidth < 75)
{
lnNewWidth = 75;
}
}
bmpOut = new Bitmap(lnNewWidth, lnNewHeight);
Graphics g = Graphics.FromImage(bmpOut);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight);
if (Path.GetExtension(imgUrl) == "jpg")
Response.ContentType = "image/jpeg";
else if (Path.GetExtension(imgUrl) == "bmp")
Response.ContentType = "image/bmp";
else if (Path.GetExtension(imgUrl) == "png")
Response.ContentType = "image/png";
else if (Path.GetExtension(imgUrl) == "gif")
Response.ContentType = "image/gif";
bmpOut.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ex)
{
HttpContext.Current.Response.Write("CreateThumbnail :" + ex.ToString());
}
finally
{
}