2013-02-21 15 views

Odpowiedz

17

HttpServerUtility.Transfer Kończy wykonywanie bieżącej strony i rozpoczyna wykonywanie podanego adresu URL. To zasadniczo mapuje i wykonuje nową stronę ASP.NET (lub obsługuje plik statyczny) odpowiadający podanemu adresowi URL. Robi to w miejscu w bieżącym potoku żądania, bez stosowania nowej konfiguracji do nowego adresu URL lub ponownego uruchamiania modułów IIS dla nowego adresu URL. Z tego powodu jest bardzo szybki, ale także zapobiega wielu scenariuszom, które są możliwe dzięki TRQ.

HttpServerUtility.TransferRequest Wykonuje asynchroniczne wykonanie podanego adresu URL. To jest pełne żądanie podrzędne dla IIS pod pokrywami, co pozwala mu na ponowne uruchomienie całego potoku żądania dla nowego żądania, tak jakby było to oddzielne żądanie, uzyskanie poprawnej konfiguracji dla niego i uruchomienie wszystkich normalnych modułów IIS w tym uwierzytelnianie, autoryzacja itp. Na przykład usługi IIS będą stosować reguły autoryzacji dla nowego adresu URL, w przeciwieństwie do poprzedniego adresu URL.

6

TransferRequest ponownie uruchamia całą żądania rurociągu tak, jakby to był oddzielny wniosek. Oznacza to, że moduły IIS i ASP.NET są ponownie stosowane; zasady uwierzytelniania i autoryzacji dla nowego adresu URL będą honorowane. Zauważ, że TransferRequest wymaga zintegrowanego trybu potokowego IIS 7+, a transfer może dotyczyć strony ASP lub innego zasobu, takiego jak plik XML.

Transfer przenosi wykonanie z jednej strony ASP na inną stronę ASP na serwerze. W przeciwieństwie do TransferRequest, IIS i ASP.NET NIE sprawdzą, czy bieżący użytkownik jest uprawniony do przeglądania zasobu dostarczonego przez metodę Transfer. Jeśli musisz wymusić ponowną autoryzację, a zintegrowany tryb potoku nie jest opcją, wywołaj metodę Redirect zamiast metody przesyłania. Przekierowanie uruchamia przekierowanie po stronie klienta, dzięki czemu nowe żądanie zostanie poddane wszelkiej logice uwierzytelniania i autoryzacji usług IIS i ASP.NET.

Powiązane problemy