問題:服務器跟換了一個exe檔案,部分客戶端下載的還是之前的exe(大部分客戶端正常)
同樣路徑方法下 下載非exe 檔案正常!!!!!!
是客戶端問題還是服務端問題?
是代碼問題還是客戶端電腦問題?
string UpdateFile = lvUpdateList.Items[i].Text.Trim();
string updateFileUrl = updateUrl + lvUpdateList.Items[i].Text.Trim();
long fileLength = 0;
WebRequest webReq = WebRequest.Create(updateFileUrl);
WebResponse webRes = webReq.GetResponse();
fileLength = webRes.ContentLength;
lbState.Text = "正在下載更新檔案,請稍后...";
pbDownFile.Value = 0;
pbDownFile.Maximum = (int)fileLength;
Stream srm = webRes.GetResponseStream();
StreamReader srmReader = new StreamReader(srm);
byte[] bufferbyte = new byte[fileLength];
int allByte = (int)bufferbyte.Length;
int startByte = 0;
while (fileLength > 0)
{
Application.DoEvents();
int downByte = srm.Read(bufferbyte, startByte, allByte);
if (downByte == 0) { break; };
startByte += downByte;
allByte -= downByte;
pbDownFile.Value += downByte;
float part = (float)startByte / 1024;
float total = (float)bufferbyte.Length / 1024;
int percent = Convert.ToInt32((part / total) * 100);
this.lvUpdateList.Items[i].SubItems[2].Text = percent.ToString() + "%";
}
string tempPath = tempUpdatePath + UpdateFile;
CreateDirtory(tempPath);
FileStream fs = new FileStream(tempPath, FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(bufferbyte, 0, bufferbyte.Length);
srm.Close();
srmReader.Close();
fs.Close();
uj5u.com熱心網友回復:
最簡單的解決辦法就是 updateFileUrl =updateFileUrl +"?"+DateTime.Now.ToString("yyyyMMddHHmmss");給URL加上一個時間戳引數, 這樣改變了URL ,就不存在快取的可能了
uj5u.com熱心網友回復:
你用的get請求吧?get請求有瀏覽器快取問題,所以要么你在引數后面加時間戳,要么改成post,或者你下載地址改為由你的指定處理程式回傳,在那個回傳中指定不使用瀏覽器快取uj5u.com熱心網友回復:
url后面增加時間戳,和亂數都可以。uj5u.com熱心網友回復:
用了你這方法不行! 感覺應該是網路代理商的問題我直接用ie ip下載 59.xxx.xx.x/xxx檔案 但ie 卻回傳的另一IP下的檔案

還有招嗎?
uj5u.com熱心網友回復:
這方法不行看樓下我發的圖..uj5u.com熱心網友回復:
這方法不行看樓下我發的圖..轉載請註明出處,本文鏈接:https://www.uj5u.com/net/146970.html
標籤:C#
