2009-11-18 5 views
2

У нас есть модуль URLRewriting, который использует Response.Redirect в методе события BeginRequest для изменения целевой страницы.HTTPModule BeginRequest должен нам Response.Redirect или Server.Transfer

  • Было бы лучше использовать Server.Transfer или Server.TransferRequest вместо Response.Redirect?
  • В решении есть другие HTTP-модули, будет ли я обходить любой из других модулей с помощью Server.Transfer, или начнется ли сервер, как если бы это был новый запрос, просто сохранив обратную поездку в браузер?
  • Означает ли клиент какие-либо различия и будет ли сервер обрабатывать запрос по-разному?

Следующие вопросы касаются различий между переадресацией и передачей, но не внутри модуля HTTP;

EDIT:HttpContext.RewritePath также используется в модуле, так что, кажется, у нас есть три способа, чтобы переместить первоначальный запрос от первоначального пути; Перенаправление, Перенос, RewritePath, которые соответственно; вернитесь в браузер, вернитесь к началу HTTP-конвейера и продолжите обработку по новому пути.

ответ

6

Вот лучшее объяснение Redirect vs Transfer vs RewritePath; http://www.developerfusion.com/article/4643/implementing-http-handlers-in-aspnet/4/

Подведение итогов; Для переадресации требуется обозреватель в обозревателе, Transfer гарантирует, что исходный объект Request остается не новым запросом, но имеет проблемы с Post-backs, Rewrite теряет оригинальный объект Request, но является лучшим для производительности.