The project that I am currently on is making use of MS AJAX UpdatePanels on quite a number of the pages and in one particular case some of the content returned to the client in this partial page postback scenario contains a link/href to some other page. Depending upon whether the user is accessing the site internally (from within the corporate network) or via the internet means that the link needs to be tailored for that specific scenario.
What this means is that they use their ISA Server to perform Link Translations to provide this tailored link. Now this all works fine for pages that are rendering the link/href in page without using partial page postback but NOT in the case of the content returned by the UpdatePanel. So after much head scratching - I know close to absolutely nothing about ISA Server - we realised that the content being returned by the partial page post back was not being link transformed because the content-type (use fiddler to see he response sent to the client when causing a postback in an UpdatePanel) was not set up for the Enterprise/Array within ISA Server.
What you get sent back for a request made in an UpdatePanel is content-type : text/plain and in our case the ISA Server was only set to Link Translate on text/html and some other content-types but not text/plain. So, simply a case of setting it to use text/plain then? Well yes and no. What we quickly saw was that by setting the entire array (this is an ISA Server term that I can’t actually claim to really understand) to use content-type text/plain that our link did indeed get link translated however, the result of this is that we then got a Sys.WebForms.PageRequestManagerParserErrorException error.
The reason that we get this parse error is widely documented but in short, when using UpdatePanels the content-length attribute in the response header is used in order to extract the content from the response such that the necessary parts of the DOM can be updated. In our case the link translations caused the length on the actual content to be larger than the reported content-length in the header and so we get the parse error.