Jak dynamicznie załadować stronę ASPX z poza katalogu aplikacji

15 października 2007, 15:23

KomentarzeKomentarze: 4 KategorieKategorie: asp.net

Kilka dni temu trafiłem na ciekawy przykład kodu, który pozwala na powołanie "obiektu strony" na podstawie wirtualnej ścieżki do pliku ASPX. Kawałek przykładowego kodu opublikował na swojej stronie Michael Palermo. Podstawą działania jest klasa BuildManager i metoda GetCompiledType, która jako parametr wejściowy przyjmuje ścieżkę wirtualną do pliku, a zwraca typ obiektu skojarzonego z plikiem ASPX. Dalej wystarczy powołać instancję danego typu stosując metodę CreateInstance klasy Activator i mamy już w rękach obiekt.

W komentarzach znalazłem pytanie jak powołać obiekt strony ASPX, który znajduje się poza katalogiem aplikacji, czyli nie znajduje się w określonej ścieżce wirtualnej. Michael chwalił się, że napisze o tym w przyszłości, więc nie czekając postanowiłem poszukać samemu i znalazłem. :)

Z pomocą przychodzi metoda statyczna GetCompiledPageInstance klasy System.Web.UI.PageParser. Przyjmuje ona trzy parametry:

  1. ścieżkę wirtualną do pliku;
  2. ścieżkę absolutną do pliku;
  3. bieżący kontekst.

Jako ścieżkę absolutną podajemy lokalizację do pliku ASPX, który może się znajdować w dowolnym miejscu na dysku. Jako kontekst oczywiście bieżący kontekst, przykładowo HttpContext.Current. A teraz mały tip. Jako ścieżkę wirtualną podajemy dowolną nazwę pliku, na przykład "/test.aspx", który nie musi istnieć w katalogu aplikacji. Wartość tego parametru służy jedynie do nazwania wygenerowanej klasy przez Parser. Dla pliku o nazwie "test.aspx" zostanie utworzona klasa w przestrzeni nazw ASP z nazwą "test_aspx".

W wyniku wykonania metody dostajemy instancję obiektu, który implementuje IHttpHandler, czyli każda strona, która dziedziczy po System.Web.UI.Page. Wyrenderowanie strony uzyskamy wywołując na tym obiekcie metodę ProcessRequest.

 Może to komuś się przyda. Mi przydało się bardzo, ale o tym innym razem ;)

Jeśli spodobał Ci się ten artykuł, to podziel się tą informacją z innymi.

Gravatar
dario-g
2009-02-27 01:39

Nie napisałem do czego mi się przydało, bo zaraz po tym poście dowiedziałem się, że powstaje ASP.NET MVC :)

Gravatar
juurek4
2010-02-11 22:20

Witam ale myślę że jest łatwiejszy sposób na rozwiązanie problemu z plikiem ASPX. Wystarczy ten plik wysłać do archiwum rar i potem go rozpakować i wtedy można go nagrać na CD lub zrobić plik ISO proszę spróbować ja tak robię

Gravatar
Andrzej
2010-06-06 00:41

Witam!

Otrzymałem od kolegi z Afryki zdjęcie,ale nie mogę go otworzyć.

jest to plik .aspx.

Proszę mi powiedzieć czy i jak mogę to zdjęcie "zobaczyć"

Pozdrawiam

Andrzej

Gravatar
dario-g
2010-06-06 11:25

Nie słyszałem o zdjęciach z takim rozszerzeniem.

Dodaj komentarz Dodaj komentarz

Twój email (niepublikowany/opcjonalnie):

Twoja strona (opcjonalnie):

Imię i nazwisko/nick (wymagane):

Treść (wymagane):

Chcę być poinformowany o kolejnych komentarzach:

Te pola zostaw puste

Uwaga! Zastrzegam sobie prawo do usuwania obraźliwych i wulgarnych komentarzy.