TransferRequest vs Transfer in ASP.Net

Я прошел по ссылкам, упомянутым ниже,

форум iis и HttpModules & Server.Передача / Сервер.TransferRequest / RewritePath проблемы. но не в состоянии уловить концепцию этих методов передачи.

как они работают? И какой из них предпочтительнее в другой ситуации?

может кто-нибудь объяснить мне TransferRequest против методов передачи для передачи на стороне сервера в asp.net и его роли?

спасибо заранее

2 ответов


HttpServerUtility.Transfer завершает выполнение текущей страницы и начинает выполнение предоставленного URL-адреса. Это в основном отображает и выполняет новый ASP.NET страница (или обслуживает статический файл), соответствующий предоставленному url-адресу. Он делает это на месте в текущем конвейере запросов без применения новой конфигурации к новому url-адресу или повторного запуска модулей IIS для нового url-адреса. Из-за этого его очень быстро, но она также предотвращает множество сценариев, которые возможны с ТК.

HttpServerUtility.TransferRequest выполняет асинхронное выполнение предоставленного URL-адреса. Это полный дочерний запрос IIS под обложками, который позволяет ему повторно запустить весь конвейер запросов для нового запроса, как если бы это был отдельный запрос, получить правильную конфигурацию для него и запустить все обычные модули IIS, включая аутентификацию, авторизацию и т. д. Например IIS будет применять правила авторизации для нового url-адреса, в отличие от предыдущего url-адреса.


TransferRequest повторно проходит весь конвейер обработки запросов, как если бы это был отдельный запрос. Это означает, что IIS и ASP.NET модули повторно применяются; будут соблюдены правила аутентификации и авторизации для нового URL-адреса. Обратите внимание, что TransferRequest требует интегрированного режима конвейера IIS 7+, и передача может быть на страницу ASP или другой ресурс, например XML-файл.

передачи переносит выполнение с одной страницы ASP на другую страницу ASP на сервер. В отличие от TransferRequest, IIS и ASP.NET не будет проверять, что текущий пользователь авторизован для просмотра ресурса, доставленного методом передачи. Если вам нужно принудительно выполнить повторную авторизацию, а интегрированный режим конвейера не является опцией, вызовите редирект вместо метода передачи. Перенаправление запускает перенаправление на стороне клиента, чтобы новый запрос подвергался всей логике проверки подлинности и авторизации IIS и ASP.NET - ...