问题:服务器跟换了一个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();

解决方案 »

  1.   

    最简单的解决办法就是 updateFileUrl =updateFileUrl +"?"+DateTime.Now.ToString("yyyyMMddHHmmss");给URL加上一个时间戳参数,  这样改变了URL ,就不存在缓存的可能了
      

  2.   

    你用的get请求吧?get请求有浏览器缓存问题,所以要么你在参数后面加时间戳,要么改成post,或者你下载地址改为由你的指定处理程序返回,在那个返回中指定不使用浏览器缓存
      

  3.   

    url后面增加时间戳,和随机数都可以。
      

  4.   

    用了你这方法不行! 感觉应该是网络代理商的问题我直接用ie ip下载 59.xxx.xx.x/xxx文件  但ie 却返回的另一IP下的文件
    还有招吗?