I have an IIS7 server that acts as a reverse proxy for several other web servers. The other servers run on different ports, so the IIS7 server provides 'friendly URLs' and all on port 80. URL rewriting is used to hand the request off to the back-end server.
One such server is TeamCity (continuous integration and build server). This server provides a way to download the results of a build ('build artifacts'). Typically these artifacts are a zip archive. Here's an example URL:
The + characters in ASCOM+Telescope+Driver+for+AWR+6.0.40.825.zip
are actually spaces in the final filename; the TeamCity server puts in the + characters.
When this link is clicked, I receive the following error from the IIS7 server:
404 - File or directory not found.
The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.
The actual URL appearing in the IIS7 logfile is:
/repository/download/bt25/4164:id/ASCOM+Telescope+Driver+for+AWR+6.0.40.825.zip
The rewrite rule matches the pattern (.*)
and rewrites the URL using
Now here is the interesting thing. If I go back to my browser and edit out those + characters, carefully replacing them with spaces, then the URL works!
I conclude that the URL rewriting is somehow not working for those + characters. Is this a known issue? Any suggestions?