好吧我正在使用Windows 7.我的软件工作非常顺利。
但是我想移动Windows 8.1,因为它是最新版本。
然而到目前为止,我对程序员方面不满意。
当我在Windows 7中使用visual studio 2012时,这段代码运行得非常好。
client.DownloadFile(uri,path);
然而,现在在带有Visual Studio 2013 Update 2 RC的Windows 8.1上,操作超时会失败。
然而,我将client.DownloadFile更改为以下功能,并且它再次运行良好。
private static void DownloadRemoteImageFile(string uri, string fileName)
{
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Timeout = 30000;
request.AllowWriteStreamBuffering = false;
using (var response = (HttpWebResponse)request.GetResponse())
using (var s = response.GetResponseStream())
using (var fs = new FileStream(fileName, FileMode.Create))
{
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = s.Read(buffer, 0, buffer.Length)) > 0)
{
fs.Write(buffer, 0, bytesRead);
bytesRead = s.Read(buffer, 0, buffer.Length);
}
}
}
所以任何人对此都有任何想法吗?
我应该回到Windows 7吗?
感谢您的回答
答案 0 :(得分:1)
是的,在Win 8.1 VS2013 Update 2上使用“ HttpWebRequest ”时遇到此问题
这就是我解决问题的方法:使用 WebClient 代替它不会超时。
public class MyWebClient : WebClient {
protected override WebRequest GetWebRequest(Uri uri) {
WebRequest w = base.GetWebRequest(uri);
w.Timeout = 30000; // the only way to set the timeout is through overriding the base class.
return w;
}
}
然后:
MyWebClient c = new MyWebClient();
c.DownloadFile(url,filename);