IIS URL Rewriting: How can I reliably keep relative paths when serving multiple files?

Posted by NVRAM on Stack Overflow See other posts from Stack Overflow or by NVRAM
Published on 2010-05-25T23:09:05Z Indexed on 2010/05/25 23:11 UTC
Read the original article Hit count: 261

Filed under:
|
|
|
|

My WebApp is part CMS, and when I serve up an HTML page to the user it typically contains relative paths in a.href and img.src attributes.

I currently have them accessed by urls like: ~/get-data.aspx/instance/user/page.html -- where instance indicates the particular instance for the report and "user/page.html" is a path created by an external application that generates the content.

This works pretty reliably with code in the application's BeginRequest method that translates the text after ".aspx" into a query string, then uses Context.RewritePath().

So far so good, but I've just tripped over something that took me by surprise: it appears that if any of the query string ("instance/user/page.html") happens to contain a plus sign ("+") the BeginRequest method is never called, and a 404 is immediately returned to the user.

So my question is two-fold:

  1. Am I correct in my belief that a "+" would cause the 404, and if so are there other things that could cause similar problems? Is there a way around that problem (perhaps a different method than BeginRequest)?

  2. Is there a better way to preserve relative URL paths for generated content than what I'm using? I'd rather not require site admins to install a 3rd party rewrite tool if I can help it.

© Stack Overflow or respective owner

Related posts about c#

Related posts about iis7