HTTPModule BeginRequest должен использовать Response.Redirect или Server.Transfer. - PullRequest
2 голосов
/ 18 ноября 2009

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

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

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

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

1 Ответ

6 голосов
/ 05 января 2010

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

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

...