WebClient每次下载一个文件就打开一个新连接,并且所有文件都保持建立状态关闭由WebClient建立的连接时出现问题。我创建了一个新的WebClient对象,然后多次调用DownloadFile方法,然而,它总是为每次调用创建一个新连接,并且这些连接保持打开状态(已建立),我可以在TCPView中看到所有已建立的连接。如果当我处理Webclient时,它们保持建立状态...下载完成后如何强制关闭连接?我已经尝试分叉WebClient并手动将keepalive设置为false,而且我的应用程序配置允许足够的连接。简短回答:您不需要手动关闭连接。他们在幕后为您管理。HTTP/1.1连接不会在请求完成后立即关闭,这样可以更及时有效地处理对同一服务器的多个请求(例如,Web浏览器从单个站点请求多个文件)。您不必为此担心或手动关闭它们,因为它们会在一段时间后超时。它会导致错误吗?如果有问题,可以尝试继承WebClient重写GetWebRequest方法手动设置KeepAlive,eg:publicclassNoKeepAlivesWebClient:WebClient{if(requestisHttpWebRequest){((HttpWebRequest)request).KeepAlive=false;}返回请求;我也总是建议使用WebClient使用模式:using(varclient=newNoKeepAlivesWebClient()){//Somecode}最后,这里有一些关于HTTP/1.1中持久连接的RFC信息:http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html和更友好的维基百科条目:http://en.wikipedia.org/wiki/HTTP_persistent_connection编辑:抱歉。我从您编辑的问题中看到您尝试过类似上述的方法但没有成功。但是,我无法重现您的问题。根据TCPView,我使用NoKeepAlivesWebClient编写了一个小程序,它在使用后成功关闭了连接。staticvoidMain(string[]args){//随机测试URLvarurls=newList{"http://msdn.microsoft.com/en-us/library/tt0f69eh.aspx","http://msdn.microsoft.com/en-us/library/system.net.webclient.allowreadstreambuffering.aspx","http://msdn.microsoft.com/en-us/library/system.net.webclient.allowwritestreambuffering.aspx","http://msdn.microsoft.com/en-us/library/system.net.webclient.baseaddress.aspx","http://msdn.microsoft.com/en-us/library/system.net.webclient.cachepolicy.aspx","http://msdn.microsoft.com/en-us/library/system.net.webclient.credentials.aspx","https://www.youtube.com/","https://www.youtube.com/feed/UClTpDNIOtgfRkyT-AFGNWVw","https://www.youtube.com/feed/UCj_UmpoD8Ph_EcyN_xEXrUQ","https://www.youtube.com/channel/UCn-K7GIs62ENvdQe6ZZk9-w"};using(varclient=newNoKeepAlivesWebClient()){//将每个URL保存到临时文件foreach(varurlinurls){client.DownloadFile(newUri(url),System.IO.Path.GetTempFileName());控制台.Wundefined
