【发布时间】:2011-01-26 09:10:25
【问题描述】:
我正在从这样的网络服务器目录中检索图像:
WebClient webClientImgDownloader = new WebClient();
webClientImgDownloader.OpenReadCompleted += new OpenReadCompletedEventHandler(webClientImgDownloader_OpenReadCompleted);
if(uriIndex < uris.Count())
webClientImgDownloader.OpenReadAsync(new Uri(uris[uriIndex], UriKind.Absolute));
但我注意到,如果我删除图像,silverlight 会继续检索图像,就好像它在那里一样。
当我在 FireFox 中输入图像 URL 时,我也看到了图像,但随后我单击 Reload,它给了我相应的错误,即图像不存在。然后当我再次运行我的 silverlight 应用程序时,它也适当地给了我一个错误,即图像不存在,好像浏览器在某处清除了缓存标志。
然后我怎样才能通过代码中的 WebClient 进行“刷新”,以便如果服务器上突然不存在图像,Silverlight 不会继续给我它的缓存副本?
【问题讨论】:
-
WebClient 不返回缓存数据。它返回服务器和任何缓存代理提供的数据。您必须让服务器不要向您发送您不想接收的数据。
-
@John:实际上在这种情况下,我怀疑根本没有实际请求。 WebClient 将使用浏览器堆栈,它将从本地缓存中传递内容,而不是向服务器发出请求。
-
@Anthony:我不知道它重用了这么多浏览器堆栈。你有参考说它是这样做的吗?
-
@John:默认情况下,Silverlights HTTP 堆栈与主机浏览器高度集成,请参阅:- msdn.microsoft.com/en-us/library/dd920295(v=VS.95).aspx 和 msdn.microsoft.com/en-us/library/cc838250(v=VS.95).aspx
-
@Anthony:抱歉,我错过了“silverlight”标签。
标签: silverlight caching webclient