好的,这是一个随机错误。我正在动态地将图像添加到html页面。这些图像位于另一台我无法控制的服务器上。图像被命名为这样的事情: imageName10.jpg imageName11.jpg imageName13.jpg imageName14.jpg imageName16.jpg imageName17.jpg imageName19.jpg.Net WebRequest第一次失败后一直失败
让我们的图像列表上方。我想获得所有可用的图像,但我不知道有多少图像。我知道它以字符串“imageName”开头,有一个10到20之间的数字,然后以字符串“.jpg”结尾。我决定创建一个从10到20的循环,创建图像名称并将图像标签添加到我的html中。这工作,但我不想添加断开的链接,所以我想先检查图像是否存在。为此,我使用WebRequest以5秒的超时时间获取图像URL。如果超时,它会跳过链接并继续循环。
String dynamicHtmlStr = String.Empty;
dynamicHtmlStr += "<TABLE>";
WebRequest webReq = null;
WebResponse webResp = null;
for (int i = 10; i < 20; i++)
{
try
{
webReq = WebRequest.Create("http://www.someurl.com/image/imageName" + i + ".jpg");
webReq.Timeout = 5000;
webResp = webReq.GetResponse();
dynamicHtmlStr += "<TR>";
dynamicHtmlStr += "<TD>";
dynamicHtmlStr += "<IMG http://www.someurl.com/image/imageName" + i + ".jpg"\">";
dynamicHtmlStr += "</TD>";
dynamicHtmlStr += "</TR>";
}
catch (Exception)
{
}
}
dynamicHtmlStr += "</TABLE>";
return dynamicHtmlStr;
我的问题是这样的: 将向WebRequest失败后的第一次。之后的所有其他网络请求似乎也失败了。例如,拿上面的图片列表。循环从10开始。它执行一个web请求来查看“imageName10.jpg”是否存在,获得了很好的响应,我将html字符串添加到dynamicHtmlStr变量中。它再次循环,这次是11,并且仍然很好。然后我们继续前进到12. 12是错误的,并且不会添加到dynamicHtmlStr,因为它不存在,这是正确的。我们转到13存在,但是这也失败了,其后的每个其他web请求,无论它是否存在。
这对我来说没有意义。难道我做错了什么?
感谢您对StringBuilder的建议。我会尝试HttpWebRequest/HttpWebResponse,看看会发生什么 – 2010-02-01 11:46:08
我的问题是,我没有关闭响应流。谢谢。 – 2013-08-27 12:49:06
做完这个后,我仍然得到这个问题... – 2016-02-10 11:16:11