Há algum tempo atrás eu mencionei aqui um grande problema que existe quando utilizamos o método Transfer da classe HttpServerUtility, principalmente quando falamos de redirecionamento para páginas restritas. Isso ocorre porque este método não executa o processo total dentro do ASP.NET pipeline. Esse foi um dos motivos que levou o Paulo Morgado a criar os Page Modules.
Para sanar este problema, a versão 3.5 do ASP.NET incluiu um novo método na classe HttpServerUtitlity chamado TransferRequest. A sua utilização é identica ao método Transfer, só que possui um comportamento totalmente diferente, ou seja, permite que a requisição para o recurso solicitado seja executado passando por todo o pipeline do ASP.NET e, sendo assim, o processo de autorização será novamente executado. Além disso, é necessário que a aplicação corra no IIS 7.0 pois, do contrário, uma exceção será atirada.
Só que para aqueles que querem utilizar esse recurso e fazem o uso de variáveis de sessão, é importante ler a nota que o Luis Abreu diz aqui.