Lesson learned with No Touch Deployment and IE
One of our 3rd party assemblies released a patch this week. We installed it, did a build, all worked fine. However, our app blew up in 2 areas. OK, no problem we thought, uninstall the new, install the old, do a server build.
We did this. The server build was successful.
A little history about our app. It's a WinForms client that is No Touch Deployed over http. We store all the assemblies in a folder off wwwroot on a WAN web server. At the end of a server build, Nant copies the assemblies to this folder.
Client's do a pull based on the Modified-Since date on each assembly.
When testing, some clients kept using the new 3rd party assembly. We checked the folder on the web server for the assembly in question and it was the old one with the old Modified-Since date. Why weren't clients pulling it down?
We found one machine that was using the old dll though. OK, some machines use the old, some use the new even though the old is on the web server. Well, problem solved.
On the machines that were using the new assembly, we had deleted their download cache. So, .NET mad a request to the web server to see if the assembly had been modified. IE handles this request, bingo. IE looks in it's cache, sees the assembly and hands it back to .NET so it never makes the trip to the web server. The machines where we did not delete the download cache still had the old assembly in their cache.
I knew about the IE layer with NTD though I never sat still long enough to put the pieces together. Deleting the download cache in IE on these client machines fixed the problem.