I’m retreiving images from a web server directory like this:
WebClient webClientImgDownloader = new WebClient();
webClientImgDownloader.OpenReadCompleted += new OpenReadCompletedEventHandler(webClientImgDownloader_OpenReadCompleted);
if(uriIndex < uris.Count())
webClientImgDownloader.OpenReadAsync(new Uri(uris[uriIndex], UriKind.Absolute));
But I’ve noticed if I remove the image, silverlight continues to retrieve the image as if it were there.
When I then type the image URL into FireFox I see the image as well, but then I click Reload and it gives me the appropriate error that the image doesn’t exist. Then when I run my silverlight application again, it also appropriately gives me an error that the image doesn’t exist as if the browser had cleared a cache flag somewhere.
How can I then do a “refresh” via WebClient in code, so that if an image suddenly doesn’t exist on the server, Silverlight doesn’t continue to give me a cached copy of it?
This is a tricky one as the caching is usually being caused by the website’s headers not specifying a no-cache. I’ve found that in the past the easiest way to deal with these caching issues is simply to provide a randomised query string parameters so that the web server interprets each request as a fresh request.
if you’re currently requesting http://www.domain.com/image.jpg then try http://www.domain.com/image.jpg?rand=XXXX where XXXX is a random value generated in your server side code.