Is it possible to redirect a link that ends with .aspx to a .ashx?
We have a website that we recently released based mostly on SharePoint. Some of the site needed to return just straight XML. The consultants on the project implemented the xml returns as .aspx pages that write the response object in the page_load method.
After a short time researching this, I relize that this is probably the wrong way to do this because it calls all the extra events for a ASPX page that we don't need.
Here's my question, I want to recreate these functions as .ashx links with the httphandler. However, I want to be able to retain the orginal links that ended in .aspx and the开发者_StackOverflow get parameters that accompany them to decide which type of XML to return.
Is is possible to rewrite/redirect the .aspx ending links to a .ashx link. Or would that cause the IIS server to interpret every .aspx incorrectly?
I think you're probably in luck...
We did a similar thing. Our eCommerce web app only accepts JPG, PNG and GIF files as the images for products, but we wanted every image to be dynamically created for every product.
So, we remapped JPG, PNG and GIF files to become a handler.
However, we didn't want ALL JPG, PNG and GIF files to be mapped since it would be hugely inefficient for static files, so we only did certain ones.
Here is how to do it.
If all of your ASPX files follow a similar file-spec that NO other files share, add this to your web.config
under <httpHandlers>
.
<add path="filespec*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/>
If they don't all share a file-spec, you'll have to add them one-by-one to web.config:
<add path="oldaspx1.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/>
<add path="oldaspx2*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/>
<add path="oldaspx3*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/>
To make this usuable whether or not you are running in the IIS7 integrated pipeline, you could also add similar lines to the <handlers>
element
Then when a request comes in for 'oldaspx1.aspx', it will get handled (very efficiently, without the page lifecycle being started) by your custom handler.
If this solves your problem, please mark it as the accepted answer with the check mark to the left.
精彩评论