C#/.net 下载服务器FTP 中的exe文件 出现“缓存”问题!该怎么解决呀?

绝版PC 2019-06-24 07:05:07

问题:服务器跟换了一个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();
...全文
1429 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2019-06-25
  • 打赏
  • 举报
回复
url后面增加时间戳,和随机数都可以。
绝版PC 2019-06-25
  • 打赏
  • 举报
回复
引用 2 楼 娃都会打酱油了 的回复:
你用的get请求吧?get请求有浏览器缓存问题,所以要么你在参数后面加时间戳,要么改成post,或者你下载地址改为由你的指定处理程序返回,在那个返回中指定不使用浏览器缓存
这方法不行看楼下我发的图..
绝版PC 2019-06-25
  • 打赏
  • 举报
回复
引用 1 楼 jinkuang45 的回复:
最简单的解决办法就是 updateFileUrl =updateFileUrl +"?"+DateTime.Now.ToString("yyyyMMddHHmmss");

给URL加上一个时间戳参数, 这样改变了URL ,就不存在缓存的可能了
这方法不行看楼下我发的图..
绝版PC 2019-06-25
  • 打赏
  • 举报
回复
用了你这方法不行! 感觉应该是网络代理商的问题

我直接用ie ip下载 59.xxx.xx.x/xxx文件 但ie 却返回的另一IP下的文件


还有招吗?
  • 打赏
  • 举报
回复
你用的get请求吧?get请求有浏览器缓存问题,所以要么你在参数后面加时间戳,要么改成post,或者你下载地址改为由你的指定处理程序返回,在那个返回中指定不使用浏览器缓存
冰川711 2019-06-24
  • 打赏
  • 举报
回复
最简单的解决办法就是 updateFileUrl =updateFileUrl +"?"+DateTime.Now.ToString("yyyyMMddHHmmss"); 给URL加上一个时间戳参数, 这样改变了URL ,就不存在缓存的可能了

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧