我写了一个程序,使用WebClient.DownloadFile()
从网站下载文件。
public static void downWeb()
{
WebClient myWebClient = new WebClient();
path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
if (add() == 1)
{
Console.WriteLine("Response is " + add());
Console.WriteLine("Downloading File = " + dynFileName + "....");
myWebClient.DownloadFile(fullAddress, (path + dynFileName));
}
}
public static int add()
{
string url = fullAddress;
WebRequest webRequest = WebRequest.Create(url);
WebResponse webResponse;
try
{
webResponse = webRequest.GetResponse();
}
catch
{
return 0;
}
return 1;
}
downWeb()
是要在Main()
函数中调用的函数。
add()
是一个测试服务器上文件可用性的函数。如果响应为正,则返回值“1”。
fullAddress =文件必须下载的地址。在Main()
中出现的循环中调用此函数之前,它每次都在变化。
当我启动我的应用程序时,我要求用户:
1)输入要下载的URL,即www.1234.com \ samplefiles \ pg-1.pdf
2)要下载的页数(通过在循环中更改上面的文件名号,因为服务器上的其余URL是相同的)
现在我的问题是当我下载文件时,第一个文件下载完美,但第二次下载永远不会完成。它说“REQUEST TIMED OUT”,我的申请结束了。
我不知道这里发生了什么。
如何解决这个问题?
答案 0 :(得分:2)
http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.getresponse.aspx
您必须调用Close方法关闭流并释放连接。如果不这样做可能会导致您的应用程序用完连接。
您的问题可能与您没有处置连接的事实有关。你应该确保不要泄漏它们。