Lost in ISA Server 2004 Translations!

With Dev’garten, I have the actual ASP.NET 2.0 site hosted on a virtual server instance running IIS, and the actual web site is located under a virtual directory.

So on the actual server, any internal references pan out to be:

Because I’m using ISA Server 2004 as a reverse proxy, I had to set up a path translation, so that when people type in https://www.devgarten.com/default.aspx, ISA changes the internal request to the web server to https://localhost/devgarten/default.aspx:

path

So the above rule is simple, take anything such as www.devgarten.com/* and make it www.devgarten.com/devgarten/*

Now, this is where it gets a little tricky. In ASP.NET 2.0, if I use the magic tilde (~) on the server to map the root, the ASP.NET filter returns URLs that contain the internal structure of https://localhost/devgarten/default.aspx for example. What happens to the localhost you ask, because in Dev’garten’s site, it comes back as https://www.devgarten.com/devgarten/default.aspx. Well, ISA has a filter called the Link Translation filter, and it autopopulates an entry to do the reverse path from https://localhost/devgarten/* to https://www.devgarten.com/devgarten/*. Very clever. Except, if the clients browser tries to make the web server request for the resource https://www.devgarten.com/devgarten/imgs/x.jpg for example, it’s not going to find it, because ISA doesn't publish that extra bit of the /devgarten path. That’s purely from the internal server. So what you need to do is create a compensating Link Translation that says:

linktranslation

So, when incoming requests ask for https://www.devgarten.com, they get the virtual directory appended through the Path config, and when the web server is returning content to the client browser, the /devgarten folder path is scrubbed by the Link Translation config. If you forget one or the other, it’s all going to go a little funny. Also, make sure you have configured your host headers correctly on your IIS box too, or you’ll get host not found errors.

Ahh, the adventures of the developer in infrastructure land :) But I have to say, I’m liking ISA Server 2004 more and more every day!