Here is what I found during the experiments.
When using Server.Transfer entire request life cycle does not start again.
If you are writing your own module, connect it to the request life cycle and call Server.Transfer from this module, the rest of the request life cycle will be skipped and the page life cycle will begin immediately.
Upon completion of the life cycle of the transfer page, the life cycle of the request selects backups with its tearing events. Please note that the HtppContext for tear events will be the original that you switched from. That is, the URL and QueryString values ββwill be the same as the original query, and not the URL and QueryString values ββfor the page that you clicked on.
Server.Transfer modifies the HttpContext.Request object to contain the new URL and QueryString information during the life cycle of the page for the page you are redirected to.
If you go to a resource that is not a page but a text one (for example, something.xml), the contents of this page will be returned in the same way as with its encoding set to text / html.
If you go to a resource that is not a page and is not based on text (for example, something.pdf), then an HttpException will be thrown. This happens even if you define a custom handler for this resource.
source share