Does IIS have a secret, unlogged, transparent, case-sensitive proxy built into it?
A file exists on the web-server:
GET http://www.stackoverflow.com/javascript/ModifyQuoteArea.js HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: www.stackoverflow.com
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 29246
Date: Mon, 07 Mar 2011 14:20:07 GMT
Content-Type: application/x-javascript
ETag: "5a0a6178edacb1:1c51"
Server: Microsoft-IIS/6.0
Last-Modified: Fri, 02 Tue 2010 17:03:32 GMT
Accept-Ranges: bytes
X-Powered-By: ASP.NET
...
Problem is that a changes made to the file will not get served, the old (i.e. February of last year) version keeps getting served:
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 29246
Date: Mon, 07 Mar 2011 14:23:07 GMT
Content-Type: application/x-javascript
ETag: "5a0a6178edacb1:1c51"
Server: Microsoft-IIS/6.0
Last-Modified: Fri, 02 Tue 2010 17:03:32 GMT
Accept-Ranges: bytes
X-Powered-By: ASP.NET
...
The same old file gets served, even though we've:
renamed the file
deleted the file
restarted IIS
The request for this file does not appear in the IIS logs (e.g. C:\WINNT\System32\LogFiles\W3SVC7\)
And this only happens from the outside (i.e. the internet). If you issue the request locally on the server, then you will:
- get the current file (file there)
- 404 (file renamed)
- 404 (file deleted)
But if i change the case of the requested resource, i.e.:
GET http://www.stackoverflow.com/javascript/MoDiFyQuOtEArEa.js HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: www.stackoverflow.com
Note: MoDiFyQuOtEArEa.js verses ModifyQuoteArea.js
Then i do get the proper file (or get the 404 as i expect if the file is renamed or deleted).
But any subsequent changes to the file will not show up until i change the case of the file i'm asking for.
Checking the IIS logs all indicate that the (internet) requests are all coming the correct client on the internet (i.e. not from some intermediate proxy).
Since the file doesn't exist on the hard drive anymore, i conclude that there is a proxy.
The requests serviced from this proxy are not logged in the IIS logs.
The requests for new files are logged, and from the client IP, not a proxy IP.
The proxy is case sensitivie.
This does not sound like something Microsoft, or IIS, would do:
- a transparent proxy
- case-sensitivie
- unlogged
- surviving restarts of IIS
- surviving in a cache for hours
i can't believe that our customer's IIS is doing these things. i'm assuming there is some other transparent proxy in front of IIS.
Or, does IIS have a transparent, unlogged, case-sensitive, memory based, proxy, that caches content for at least 7 hours? (Come Monday morning, IIS is serving the correct file, unlogged).