Я думаю Context.RewritePath()
- лучший вариант.
Причина:
Server.Transfer()
бросает ThreadAbortException
каждый раз. Результат вызова Response.End()
.
Подробнее читайте в следующих статьях MS:
Дополнительная информация:
Server.Transfer()
не отправляет команду перенаправления HTTP 302, как Response.Redirect()
.
Согласно HttpContext.RewritePath на MSDN , RewritePath()
используется в состоянии сеанса без файлов cookie.
Кроме того, по другой теме Server.Transfer()
и Server.Execute()
сильно отличаются:
Server.Execute()
возвращает управление на начальную страницу сразу после того, где она была вызвана.
Например:
<div>
test 1 <br/>
<% Server.Execute("include.aspx?hello=ok"); %>
test 2 <br/>
</div>
Будет выводить:
тест 1
содержание include.aspx? Hello = ok
тест 2