Tag: webclient

C#WebClient禁用缓存

美好的一天。 我在我的C#应用​​程序中使用WebClient类,以便每分钟下载相同的文件,然后应用程序执行简单的检查以查看文件是否已更改,以及它是否确实对其执行了操作。 好吧,因为这个文件每分钟下载一次, WebClient缓存系统就会缓存文件,而不是再次下载文件,只是简单地从缓存中获取文件,这样就会检查下载的文件是否是新文件。 所以我想知道如何禁用WebClient类的缓存系统。 我试过了。 Client.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.BypassCache); 我也试过标题。 WebClient.Headers.Add(“Cache-Control”, “no-cache”); 没有用。 那我怎么能禁用缓存呢? 谢谢。 编辑 我还尝试了以下CacheLevels : NoCacheNoStore , BypassCache , Reload 。 没有效果,但是如果我重新启动计算机,缓存似乎被清除,但我不能每次都重新启动计算机。 面对最近的活动更新(8集2012) 标记为已接受的答案解决了我的问题。 简单来说,我使用套接字下载文件,这解决了我的问题。 基本上是对所需文件的GET请求,我不会详细介绍如何操作,因为我相信你可以在SO上找到很多“如何”,以便自己做同样的事情。 虽然这并不意味着我的解决方案也是最适合您的,但我的第一个建议是阅读其他答案,看看是否有用。 好吧无论如何,因为这个问题已经看到了最近的一些活动,我想添加这个更新,以包括一些我认为应该考虑面临类似问题的人应该考虑的提示或想法,他们尝试了他们可以想到的一切,并且确定问题没有撒谎他们的代码。 可能是大多数情况下的代码,但有时候我们只是不太看,只要走几分钟后再回来,你可能会看到它是空白范围,就像它是最明显的一样。第一名。 无论哪种方式,如果您确定,那么在这种情况下,我建议检查天气您的请求通过其他具有缓存function的设备(计算机,路由器,代理,…),直到它到达预定目的地。 考虑到大多数请求都通过之前提到的一些此类设备,更常见的是路由器,除非您通过服务提供商网络直接连接到Internet。 有一段时间我自己的路由器正在缓存文件,奇怪我知道,但事实就是如此,每当我重新启动它或直接连接到Internet时,我的缓存问题就消失了。 并且没有任何其他设备连接到路由器可以被指责,只有计算机和路由器。 顺便说一句,一般建议,虽然它主要适用于那些在公司开发计算机而不是自己的计算机上工作的人。 可以通过任何更改您的开发计算机运行各种缓存服务? 有可能的。 此外,考虑到许多高端网站或服务使用内容交付网络 (CDN),并且根据CDN提供商,无论何时更新或更改文件,此类更改都需要一些时间才能反映在整个网络中。 因此,您可能有可能要求提供可能处于更新中间的文件,并且最近的CDN服务器尚未完成更新。 在任何情况下 ,特别是如果你总是一遍又一遍地请求同一个文件,或者你找不到问题所在,那么如果可能的话,我建议你重新考虑你的方法,一次又一次地请求同一个文件,而是考虑构建一个简单的Web服务 ,以满足您首先考虑满足此类文件的需求。 如果您正在考虑这样的选项,我认为您可能会更容易根据自己的需要构建REST样式Web API 。 我希望这个更新在某种程度上对你有用,肯定会在我回来的时候。 祝您的编码工作顺利。