下面是我用來從多個服務器下載文件的方法。請注意,我已經設置了從響應流中讀取多少的限制,因爲如果我得到的文件超過了指定的大小,我不想全部讀取它。在我的應用程序中,沒有URL會導致文件超出大小;您可以省略此限制或根據需要增加此數量。
int MaxBytes = 8912; // set as needed for the max size file you expect to download
string uri = "http://your.url.here/";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Timeout = 5000; // milliseconds, adjust as needed
request.ReadWriteTimeout = 10000; // milliseconds, adjust as needed
using (var response = request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
// Process the stream
byte[] buf = new byte[1024];
string tempString = null;
StringBuilder sb = new StringBuilder();
int count = 0;
do
{
count = responseStream.Read(buf, 0, buf.Length);
if (count != 0)
{
tempString = Encoding.ASCII.GetString(buf, 0, count);
sb.Append(tempString);
}
}
while (count > 0 && sb.Length < MaxBytes);
responseStream.Close();
response.Close();
return sb.ToString();
}
}
我不知道這是否會解決您遇到的懸掛問題,但它適用於我的應用程序。
當您設置超時時間超時? – 2010-03-14 09:32:45
不,那是我的問題。我的過程只是掛起,直到我殺死它。 – sagie 2010-03-14 09:42:35
你可以發佈你的下載代碼嗎?從目前的迴應看,問題似乎更可能是您的連接而不是您的代碼,但如果我們可以看到您的代碼,它將有助於確認這一點。 – 2010-03-23 10:37:31