Professional Documents
Culture Documents
Ksiga eksperta
Autor: Stephen Walther
Tumaczenie: Robert Grczyski
ISBN: 978-83-246-0689-4
Tytu oryginau: ASP.NET 2.0 Unleashed
Format: B5, stron: 1024
oprawa twarda
Zawiera CD-ROM
Kompletny przewodnik po technologii ASP.NET 2.0
Poznaj zasady dziaania ASP.NET
Naucz si korzysta z nowatorskich moliwoci ASP.NET 2.0
Twrz profesjonalne witryny internetowe
Do ksiki doczona jest pyta z przykadowym kodem w jzykach VB.NET i C#, ktry
moesz szybko wykorzysta na wasnych witrynach. ASP.NET 2.0. Ksiga eksperta
to prawdziwa skarbnica informacji, ktr powinien mie kady programista ASP.NET.
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Spis treci
O autorze .....................................................................................................21
Wprowadzenie ............................................................................................23
Spis treci
Spis treci
10
Spis treci
11
12
Spis treci
13
Cz VI Bezpieczestwo ...................................................................529
Rozdzia 20. Uywanie kontrolek Login ...................................................531
Oglny opis kontrolek Login ............................................................................................................. 532
Uywanie kontrolki Login ................................................................................................................. 534
Automatyczne przekierowanie uytkownika na stron logowania ............................................. 535
Automatyczne ukrywanie kontrolki Login przed uwierzytelnionymi uytkownikami ............... 536
Uywanie szablonu w kontrolce Login ....................................................................................... 536
Przeprowadzanie wasnego uwierzytelniania w kontrolce Login ............................................... 538
Uywanie kontrolki CreateUserWizard ............................................................................................. 539
Konfigurowanie pl formularza kontrolki CreateUserWizard .................................................... 540
Wysyanie wiadomoci e-mail po utworzeniu uytkownika ....................................................... 542
Automatyczne przekierowanie uytkownika ze strony logowania ............................................. 544
Automatyczne generowanie hasa ............................................................................................... 544
Uywanie szablonw w kontrolce CreateUserWizard ................................................................ 546
Dodawanie krokw do kontrolki CreateUserWizard .................................................................. 548
Uywanie kontrolki LoginStatus ....................................................................................................... 548
Uywanie kontrolki LoginName ........................................................................................................ 549
Uywanie kontrolki ChangePassword ............................................................................................... 550
Wysyanie w wiadomoci e-mail zmienionego hasa .................................................................. 551
Uywanie szablonw w kontrolce ChangePassword .................................................................. 552
Uywanie kontrolki PasswordRecovery ............................................................................................ 553
Wysyanie oryginalnego hasa uytkownika ............................................................................... 553
Wymaganie pytania bezpieczestwa i odpowiedzi na nie ........................................................... 555
Uywanie szablonw w kontrolce PasswordRecovery ............................................................... 556
Uywanie kontrolki LoginView ........................................................................................................ 556
Uywanie rl w kontrolce LoginView ........................................................................................ 557
Podsumowanie ................................................................................................................................... 558
14
Spis treci
15
16
Spis treci
17
18
Spis treci
19
Skorowidz ...................................................................................................971
31
Rozdzia 1.
Oglny opis
platformy ASP.NET
Prac rozpoczniemy od zbudowania prostej strony ASP.NET.
Informacje dotyczce instalowania ASP.NET znajduj si w ostatnim podrozdziale
biecego rozdziau.
Jeeli Czytelnik korzysta z pakietu Visual Web Developer lub Visual Studio .NET, to
w pierwszej kolejnoci musi utworzy now witryn internetow. Uruchamiamy wic
pakiet Visual Web Developer i wybieramy opcj New Web Site z menu File, co spowoduje wywietlenie okna dialogowego New Web Site (zobacz rysunek 1.1). W polu Location wywietlonego okna dialogowego naley poda nazw katalogu, w ktrym ma zosta
utworzona witryna internetowa, a nastpnie klikn przycisk OK.
32
Dyrektywa zawsze rozpoczyna si znakami specjalnymi <%@ i koczy znakami %>. Gwnym zastosowaniem dyrektyw jest dostarczenie kompilatorowi informacji wymaganych
do skompilowania strony.
33
Rysunek 1.3.
Wywietlanie strony
FirstPage.aspx
w przegldarce
internetowej
Przykadowo dyrektywa umieszczona w kodzie z pliku Rozdzial01\FirstPage.aspx wskazuje, e kod zawarty na tej stronie jest kodem w jzyku Visual Basic .NET (VB.NET).
Strona jest wic kompilowana przez kompilator Visual Basic .NET, a nie inny kompilator, na przykad C#.
Nastpna cz strony rozpoczyna si od otwierajcego znacznika <script
runat=server"> i koczy zamykajcym znacznikiem </script>. Wymieniony znacznik
<script> zawiera element, ktry nazywamy blokiem kodu deklaracyjnego.
Blok kodu deklaracyjnego zawiera wszystkie metody, funkcje i procedury wykorzystywane na stronie. Zawarty w pliku Rozdzial01\FirstPage.aspx blok kodu deklaracyjnego
zawiera pojedyncz procedur o nazwie Page_Load(), ktra prezentuje si nastpujco:
Sub Page_Load()
lblServerTime.Text = DateTime.Now.ToString()
End Sub
34
Klasa File reprezentuje plik na dysku twardym. Klasa File moe zosta
uyta do sprawdzenia, czy dany plik istnieje, do utworzenia nowego pliku,
do usunicia pliku oraz do wykonania wielu innych zada zwizanych z plikami.
35
Powyej zostay przedstawione jedynie cztery klasy z platformy .NET, natomiast platforma
.NET skada si z 13 000 klas, ktre mog zosta wykorzystane do tworzenia aplikacji.
Wszystkie klasy umieszczone w platformie .NET mona przejrze po otworzeniu dokumentacji Microsoft .NET Framework SDK i rozwiniciu wza Class Library (zobacz
rysunek 1.4). Jeeli dokumentacja SDK nie zostaa zainstalowana na komputerze, wwczas
Czytelnik powinien zapozna si z ostatnim podrozdziaem biecego rozdziau.
36
Kada z klas platformy moe zawiera waciwoci, metody i zdarzenia. Waciwoci, metody i zdarzenia udostpniane przez klas s jej elementami. Przykadowo poniej znajduje si czciowa lista elementw klasy SmtpClient:
Waciwoci
Metody
Zdarzenia
Jeeli programista zna element klasy, wwczas wie wszystko, co moe osign za pomoc danej klasy. Przykadowo klasa SmtpClient zawiera dwie waciwoci o nazwie
Host i Port, ktre umoliwiaj podanie serwera wiadomoci e-mail oraz portu uywanego
w trakcie wysyania wiadomoci e-mail.
Klasa SmtpClient posiada rwnie dwie metody, ktre mog by wykorzystane do wysania wiadomoci: Send() oraz SendAsync(). Metoda Send() blokuje dalsze wykonywanie
programu, dopki operacja wysyania nie zostanie zakoczona. Z drugiej strony metoda
SendAsync() asynchronicznie wysya wiadomo e-mail. W przeciwiestwie do metody
Send() metoda SendAsync() nie musi czeka z wykonywaniem dalszej czci kodu do chwili
upewnienia si, e operacja wysyania wiadomoci zakoczya si powodzeniem.
Na koniec klasa SmtpClient zawiera take zdarzenie o nazwie SendCompleted, ktre zostaje
wywoane, gdy zakoczy si operacja asynchronicznego wysyania wiadomoci. Programista moe utworzy obsug zdarze dla zdarzenia SendCompleted, w ktrym bdzie
wywietlany komunikat informujcy o pomylnym wysaniu wiadomoci e-mail.
Strona zawarta w pliku Rozdzial01\SendMail.aspx w celu wysania wiadomoci e-mail
wywouje metod Send() klasy SmtpClient. Pierwszym parametrem jest adres nadawcy,
drugim adres odbiorcy, trzecim temat wiadomoci, a ostatni parametr to cz gwna
wysyanej wiadomoci e-mail.
Strona z pliku Rozdzial01\SendMail.aspx powoduje wysanie wiadomoci e-mail
za pomoc lokalnego serwera SMTP. Jeeli serwer SMTP nie jest wczony, wwczas
uytkownik otrzyma komunikat bdu o braku moliwoci nawizania poczenia
(An existing connection was forcibly closed by the remote host). Wczenie
lokalnego serwera SMTP nastpuje po otworzeniu w Panelu sterowania elementu
Internetowe usugi informacyjne, a nastpnie wybraniu wza Domylny serwer
wirtualny SMTP i wybraniu z menu kontekstowego opcji Uruchom.
37
Podawanie przestrzeni nazw podczas kadego uycia klasy moe bardzo szybko sta si
uciliwe (wymaga to wikszej iloci kodu do napisania). Inn moliwoci jest wic
opcja zaimportowania przestrzeni nazw.
Po drugie, programista moe doda na stronie dyrektyw <%@ Import %> suc do wspomnianego powyej zaimportowania okrelonej przestrzeni nazw. W pliku Rozdzial01\
SendMail.aspx zostaa zaimportowana przestrze nazw System.Net.Mail, poniewa klasa
SmtpClient jest czci wymienionej przestrzeni nazw. Na samym pocztku strony zawartej w pliku Rozdzial01\SendMail.aspx znajduje si ponisza dyrektywa:
<%@ Import Namespace="System.Net.Mail" %>
38
Programista nie musi importowa kadej przestrzeni nazw. Platforma ASP.NET domylnie udostpnia wikszo najczciej wykorzystywanych przestrzeni nazw, do ktrych
zaliczamy:
System
System.Collections
System.Collections.Specialized
System.Configuration
System.Text
System.Text.RegularExpressions
System.Web
System.Web.Caching
System.Web.SessionState
System.Web.Security
System.Web.Profile
System.Web.UI
System.Web.UI.WebControls
System.Web.UI.WebControls.WebParts
System.Web.UI.HTMLControls
Domylne przestrzenie nazw zostay podane w elemencie pages znajdujcym si w nadrzdnym pliku konfiguracyjnym umieszczonym pod nastpujc ciek dostpu:
\WINDOWS\Microsoft.NET\Framework\[wersja]\CONFIG\Web.Config
Zrozumienie podzespow
Podzesp jest rzeczywistym plikiem .dll znajdujcym si na dysku twardym, w ktrym
jest przechowywana klasa z platformy .NET. Przykadowo klasy zawarte w platformie
.NET s umieszczone w podzespole o nazwie System.Web.dll.
39
Mwic bardziej precyzyjnie, podzesp jest podstawow jednostk projektowania, bezpieczestwa i kontrolowania wersji w platformie .NET. Poniewa podzesp moe by
rozmieszczony w wielu plikach, to do podzespou czsto odnosimy si jako do logicznej
biblioteki dll.
Platforma .NET w wersji 2.0 posiada 51 podzespow.
Zanim programista bdzie mg w tworzonej aplikacji uy klasy znajdujcej si w podzespole, musi doda odniesienie do danego podzespou. Domylnie aplikacja ASP.NET
posiada odniesienia do wikszoci najczciej uywanych podzespow znajdujcych si
w Global Assembly Cache:
mscorlib.dll
System.dll
System.Configuration.dll
System.Web.dll
System.Data.dll
System.Web.Services.dll
System.Xml.dll
System.Drawing.dll
System.EnterpriseServices.dll
System.Web.Mobile.dll
W celu uycia okrelonej klasy z platformy .NET programista musi wykona dwie operacje. Po pierwsze, tworzona aplikacja musi posiada odniesienie do podzespou, ktry
zawiera dan klas. Po drugie, aplikacja musi importowa przestrze nazw, ktra jest
przypisana do danej klasy.
W wikszoci przypadkw programista nie musi martwi si o tworzenie odniesienia do
niezbdnych podzespow, poniewa odniesienia do najczciej wykorzystywanych podzespow s tworzone automatycznie. Jednake, jeli zachodzi konieczno uycia wyspecjalizowanego podzespou, naley wyranie doda odniesienie do tego podzespou.
40
Programici, ktrzy nie wykorzystuj pakietu Visual Web Developer, mog doda odniesienie do podzespou System.Messaging po prostu po przez rczne utworzenie pliku przedstawionego na listingu 1.2.
Active Directory usuga katalogowa dla systemw Windows 2000 oraz Windows Server 2003 zgodna ze
specyfikacj LDAP 3.0 (chocia istnieje kilka odstpstw od tej specyfikacji). Wicej informacji znajduje si
na stronach http://pl.wikipedia.org/wiki/Active_Directory oraz http://www.microsoft.com/windowsserver2003/
technologies/directory/activedirectory/default.mspx (w jzyku angielskim) przyp. tum.
41
Ada
Apl
Caml
COBOL
Eiffel
Forth
Fortran
JavaScript
Oberon
PERL
Pascal
PHP
Python
RPG
Scheme
Small Talk
42
43
Powysza deklaracja kontrolki wyglda podobnie do deklaracji znacznika HTML, jednake naley pamita, e w przeciwiestwie do kontrolki HTML to powysza kontrolka
jest klas .NET, ktra zostanie wykonana na serwerze, a nie w przegldarce internetowej.
Kiedy kontrolka TextBox jest generowana do przegldarki internetowej, przyjmuje nastpujc posta:
<input name="TextBox1" type="text" id="TextBox1" />
Pierwsza cz deklaracji kontrolki, prefiks asp:, wskazuje przestrze nazw dla danej
kontrolki. Wszystkie kontrolki standardowe ASP.NET s zawarte w przestrzeni nazw
System.Web.UI.WebControls. Wymieniony prefiks asp: reprezentuje t przestrze nazw.
44
W takim przypadku znacznik otwierajcy nie posiada ukonika, a na kocu jest umieszczony znacznik zamykajcy.
45
46
Na koniec w trybie Design view po zaznaczeniu kontrolki w oknie roboczym istnieje moliwo dodania obsugi zdarze z okna Properties poprzez kliknicie przycisku Events
(symbol byskawicy), a nastpnie dwukrotne kliknicie obok wybranego zdarzenia (zobacz
rysunek 1.7).
Jest bardzo wane, aby zrozumie, e wszystkie zdarzenia kontrolek ASP.NET zachodz
po stronie serwera. Przykadowo zdarzenie Click nie jest faktycznie wykonywane po klikniciu przycisku przez uytkownika. Zdarzenie Click nie bdzie wywoane do chwili, dopki
strona zawierajca kontrolk Button nie zostanie przekazana z powrotem do serwera.
Platforma ASP.NET jest platform aplikacji sieciowych po stronie serwera. Kod napisany
przez programist jest wykonywany przez platform .NET na serwerze, a nie w przegldarce internetowej. Z punktu widzenia ASP.NET, dopki strona nie zostanie przekazana z powrotem do serwera, na ktrym platforma .NET bdzie moga wykona swoje
zadania, to nic si nie zdarzyo.
Warto zwrci uwag na dwa parametry przekazywane metodzie btnSubmit_Click() w kodzie z pliku Rozdzial01\ShowButtonClick.aspx. Wszystkie obsugi zdarze kontrolek
ASP.NET posiadaj t sam ogln sygnatur.
Pierwszy parametr, obiekt o nazwie sender, reprezentuje kontrolk, ktra wywoaa zdarzenie. Innymi sowy, w omawianym przypadku bdzie to kontrolka Button kliknita przez
uytkownika.
47
Programista moe poczy wiele kontrolek na stronie z jedn procedur obsugi zdarze,
a nastpnie uywa pierwszego parametru w celu okrelenia kontrolki, ktra wywoaa
zdarzenie. Przykadowo strona zawarta w pliku Rozdzial01\ButtonCounters.aspx zawiera
dwie kontrolki Button. Kiedy uytkownik kliknie dowoln kontrolk Button, wwczas
tekst wywietlany przez kontrolk Button zostanie uaktualniony (zobacz rysunek 1.8).
Drugim parametrem przekazywanym do obsugi zdarze Click jest parametr EventArgs
o nazwie e reprezentujcy wszystkie dodatkowe informacje o zdarzeniu, ktre s z tym
zdarzeniem zwizane. W chwili kliknicia przycisku nie zostaj przypisane do zdarzenia
adne dodatkowe informacje, tak wic ani w pliku Rozdzial01\ShowButtonClick.aspx, ani
w pliku Rozdzial01\ButtonCounters.aspx drugi parametr nie zawiera adnych uytecznych informacji.
Z drugiej strony, gdy uytkownik kliknie kontrolk ImageButton zamiast Button, wwczas
do obsugi zdarze zostan przekazane dodatkowe informacje o zdarzeniu. Kiedy uytkownik kliknie kontrolk ImageButton, to do obsugi zdarze zostan przekazane wsprzdne X i Y miejsca, w ktrym nastpio kliknicie.
48
Rysunek 1.8. Obsugiwanie dwch kontrolek Button za pomoc jednej procedury obsugi zdarze
49
Platforma ASP.NET wykorzystuje sztuczk o nazwie stan widoku (View State). Jeeli
uytkownik otworzy w przegldarce internetowej stron zawart w pliku Rozdzial01\
ShowViewState.aspx i wybierze opcj Poka rdo z menu Widok, wwczas zauway, e
wygenerowana strona zawiera ukryte pole formularza sieciowego o nazwie _VIEWSTATE.
Wspomniane pole przedstawia si nastpujco:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUKLTc2ODE1OTYxNw9kFgICBA9kFgIC Aw8PFgIeBFRleHQFATFkZGT3tMnThg9KZpGak
55p367vfInj1w==" />
50
51
52
Dla zainteresowanych Czytelnikw w pliku Rozdzial01\FirstPage.aspx.vb zosta przedstawiony kod rdowy klasy, ktra odpowiada przedstawionej wczeniej stronie Rozdzial01\FirstPage.aspx (kod zosta odrobin oczyszczony w celu zmniejszenia jego objtoci). Przedstawiony kod zosta skopiowany z pliku umieszczonego w katalogu Temporary
ASP.NET Files po wczeniejszym wczeniu debugowania aplikacji.
53
Wze nadrzdny w drzewku kontrolek jest stron waciw. Strona posiada atrybut
ID o wartoci __Page. Klasa strony zawiera wszystkie pozostae kontrolki w jej zbiorach
kontrolek potomnych.
Drzewko kontrolek posiada rwnie egzemplarz klasy HtmlForm o nazwie form1. Ta kontrolka jest serwerowym znacznikiem form umieszczonym na stronie. Wymieniony znacznik
zawiera wszystkie pozostae kontrolki formularza DropDownList oraz Button jako
kontrolki podrzdne.
Naley rwnie zwrci uwag na kilka kontrolek LiteralControl, ktre funkcjonuj
w charakterze porednika midzy innymi kontrolkami w drzewku kontrolek. Czym s
wspomniane kontrolki?
Trzeba pamita, e wszystko na stronie ASP.NET zostaje skonwertowane do postaci klasy
.NET, wczajc w to kod HTML oraz dowoln zawarto tekstow strony. Klasa LiteralControl przedstawia zawarto HTML na stronie (cznie z obecnymi na stronie midzy
znacznikami znakami nowego wiersza).
54
Strona zawarta w pliku Rozdzial01\FirstPageCodeBehind.aspx nosi nazw strony prezentacyjnej i zawiera kontrolki Button oraz Label. Jednake strona ta nie posiada jakiegokolwiek kodu. Cay kod j obsugujcy zosta umieszczony w pliku ukrytego kodu.
Uwaga dla uytkownikw pakietu Visual Web Developer
Przejcie do pliku ukrytego kodu strony nastpuje po klikniciu danej strony prawym przyciskiem
myszy i wybraniu opcji View Code.
55
Klasy czciowe umoliwiaj zadeklarowanie klasy nie tylko w jednym fizycznym pliku.
W trakcie kompilowania klasy jest ona generowana ze wszystkich klas czciowych.
Wszystkie elementy jednej klasy czciowej wczajc w to wszystkie prywatne pola,
metody i waciwoci s dostpne w innej klasie czciowej tej samej klasy. Jest to
cakiem logiczne rozwizanie, poniewa klasy czciowe s ostatecznie czone w celu
utworzenia klasy kocowej.
Zalet uywania klas czciowych jest to, e programista nie musi deklarowa kontrolki
zarwno na stronie prezentacyjnej, jak i w pliku ukrytego kodu. Wszystkie elementy,
ktre zostan zadeklarowane na stronie prezentacyjnej, staj si automatycznie dostpne
w pliku ukrytego kodu, natomiast wszystko, co zostao zadeklarowane w pliku ukrytego
kodu, jest automatycznie dostpne na stronie prezentacyjnej.
Wersja beta platformy ASP.NET 2.0 uywaa klas czciowych w celu poczenia strony
prezentacyjnej z jej plikiem ukrytego kodu, jednake pewne zaawansowane funkcje platformy ASP.NET 1.x nie zachoway zgodnoci podczas wykorzystywania klas czciowych. Aby obsuy te zaawansowane funkcje, w kocowej wersji platformy ASP.NET
zostay zastosowane bardziej zoone metody powizania stron prezentacyjnych z ich plikami ukrytego kodu.
56
W celu powizania stron prezentacyjnych z plikami ukrytego kodu ostateczna wersja platformy ASP.NET 2.0 uywa poczenia dziedziczenia oraz klas czciowych. Gdy programista tworzy plik ukrytego kodu, wtedy platforma ASP.NET 2.0 generuje trzy klasy.
Pierwsze dwie klasy odpowiadaj stronie prezentacyjnej. Przykadowo po utworzeniu strony
FirstPageCodeBehind.aspx w katalogu Temporary ASP.NET Files zostan automatycznie
wygenerowane nastpujce klasy:
Partial Public Class FirstPageCodeBehind
Protected WithEvents Button1 As Global.System.Web.UI.WebControls.Button
Protected WithEvents Label1 As Global.System.Web.UI.WebControls.Label
... miejsce na dodatkowy kod klasy ...
End Class
Public Class firstpagecodebehind_aspx
Inherits FirstPageCodeBehind
... miejsce na dodatkowy kod klasy ...
End Class
Trzecia wygenerowana klasa odpowiada plikowi ukrytego kodu. Dla pliku FirstPageCodeBehind.vb zostanie wic wygenerowana nastpujca klasa:
Partial Class FirstPageCodeBehind
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Button1.Click
Label1.Text = "Dzikuj!"
End Sub
End Class
Klasa firstpagecodebehind_aspx jest wykonywana, gdy w przegldarce internetowej pojawi si danie wywietlenia strony FirstPageCodeBehind.aspx. Wymieniona klasa
dziedziczy po klasie FirstPageCodeBehind, ktra jest klas czciow. Klasa zostaje
wygenerowana dwukrotnie: raz przez stron prezentacyjn oraz ponownie przez plik
ukrytego kodu.
W celu powizania stron prezentacyjnych oraz plikw ukrytego kodu kocowe wydanie
platformy ASP.NET 2.0 uywa poczenia klas czciowych oraz dziedziczenia. Poniewa strona oraz klasy ukrytego kodu s klasami czciowymi, to w przeciwiestwie do
poprzedniej wersji ASP.NET programista nie musi duej dwukrotnie deklarowa kontrolek zarwno na stronie prezentacyjnej, jak i w pliku ukrytego kodu. Kada kontrolka
57
58
Dlaczego na powyszej licie znajduje si tak wiele zdarze? Na kolejnych etapach cyklu
ycia strony zachodz rne zdarzenia oraz s udostpniane rozmaite informacje.
Przykadowo stan widoku nie zostanie w peni wczytany przed wywoaniem zdarzenia
InitComplete. Dane przekazywane z kontrolki, na przykad TextBox, do serwera rwnie
nie bd dostpne przed wywoaniem wymienionego zdarzenia.
W dziewidziesiciu dziewiciu procentach sytuacji programista nie bdzie obsugiwa
wymienionych na powyszej licie zdarze za wyjtkiem zdarze Load i PreRender. Rnica
midzy wskazanymi zdarzeniami polega na tym, e zdarzenie Load wystpuje przed jakimikolwiek zdarzeniami kontrolki, a zdarzenie PreRender wystpuje po wywoaniu wszystkich zdarze kontrolek.
Strona zawarta w pliku Rozdzial01\ShowPageEvents.aspx prezentuje rnic midzy zdarzeniami Load i PreRender. Strona zawiera wic trzy procedury obsugi zdarze: jedn
dla zdarzenia Load, drug dla zdarzenia Button Click oraz trzeci dla zdarzenia PreRender.
Kada obsuga zdarze dodaje do kontrolki Label wasny komunikat (zobacz rysunek 1.12).
Kiedy uytkownik kliknie kontrolk Button, zdarzenie Click zostanie wywoane na serwerze po zdarzeniu Load, ale jeszcze przed wystpieniem zdarzenia PreRender.
Inn kwesti odnonie pliku Rozdzial01\ShowPageEvents.aspx, na ktr warto zwrci
uwag, jest sposb poczenia procedur obsugi zdarze ze zdarzeniami klasy Page.
ASP.NET obsuguje wczon domylnie funkcj o nazwie AutoEventWireUp. Jeeli procedura bdzie miaa nazw Page_Load(), wwczas procedura automatycznie obsuy zdarzenie Load klasy Page, natomiast nazwa procedury w postaci Page_PreRender() spowoduje automatyczn obsug zdarzenia PreRender klasy Page.
Funkcja AutoEventWireUp nie dziaa w przypadku kadego zdarzenia strony. Przykadowo
funkcja nie dziaa dla zdarzenia Page_InitComplete().
59
Rysunek 1.12.
Wywietlanie kolejnoci
wystpowania zdarze
strony
60
61
Zamiast wcza debugowanie dla pojedynczej strony, programista moe wczy debugowanie dla caej aplikacji poprzez dodanie do aplikacji przedstawionego na listingu 1.3
pliku konfiguracyjnego.
Listing 1.3. Web.Config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" />
</system.web>
</configuration>
62
Po osigniciu punktu kontrolnego programista moe kontynuowa wykonywanie aplikacji za pomoc polece Step Into, Step Over i Step Out dostpnych w menu Debug lub
na pasku narzdziowym. Poniej znajduje si objanienie kadej z wymienionych wczeniej opcji:
Step Out powoduje wykonanie kolejnego wiersza kodu oraz powrt do metody,
ktra wywoaa biec metod.
63
Rysunek 1.15.
Ustawienie punktu
kontrolnego
Kiedy debugowanie strony zostanie zakoczone, wwczas mona kontynuowa, zatrzyma lub uruchomi ponownie dziaanie aplikacji poprzez wybr odpowiedniej opcji z menu
Debug lub paska narzdziowego.
64
Programista powinien wykorzysta zalety pynce ze ledzenia strony, gdy musi dokadnie
wiedzie, jakie zachodz zdarzenia w trakcie uruchomienia strony. Metod Trace.Warn()
mona wywoa w dowolnym miejscu kodu. Poniewa sekcja Trace Information pojawia
si w miejscu wystpienia bdu, to ledzenie strony bdzie przydatn technik diagnozowania powodu powstawiania bdw na stronie.
Jedyn wad ledzenia strony jest fakt, e kada osoba na wiecie moe zobaczy informacje pochodzce ze ledzenia strony. Ominiciem tego problemu moe by wykorzystanie zalet ledzenia na poziomie aplikacji. Kiedy zostanie wczone ledzenie na poziomie aplikacji, wwczas informacje pochodzce ze ledzenia zostan wywietlone
jedynie po wystpieniu dania wywietlenia strony o nazwie Trace.axd.
W celu wczenia ledzenia na poziomie aplikacji do aplikacji naley doda plik konfiguracyjny, ktry jest przedstawiony na listingu 1.5.
Listing 1.5 Web.Config
<?xml version="1.0"?>
<configuration>
<system.web>
<trace enabled="true" />
</system.web>
</configuration>
65
Po dodaniu do aplikacji pliku konfiguracyjnego przedstawionego na listingu 1.5 programista moe zgosi danie wywietlenia strony Trace.axd w przegldarce internetowej. Na podanej stronie zostanie wywietlonych ostatnich 10 da strony po wczeniu
ledzenia na poziomie aplikacji (zobacz rysunek 1.17).
Jeli uytkownik kliknie cze View Details znajdujce si obok kadego dania wywietlenia strony, wwczas bdzie mg pozna wszystkie komunikaty pochodzce ze ledzenia wygenerowane przez dan stron. Komunikaty zapisywane za pomoc metody
Trace.Warn() zostan wywietlone przez stron Trace.axd nawet wtedy, gdy ledzenie
na poziomie strony zostao wyczone.
Istnieje moliwo wykorzystania nowego atrybutu writeToDiagnosticsTrace elementu
trace w celu zapisania w oknie Output pakietu Visual Web Developer wszystkich
komunikatw pochodzcych ze ledzenia aplikacji po jej uruchomieniu. Atrybut
mostRecent powoduje wywietlenie ostatnich dziesiciu da strony zamiast dziesiciu
da strony po wczeniu ledzenia.
66
Pakiet Visual Web Developer Express jest zgodny z nastpujcymi systemami operacyjnymi:
Windows x64
Windows Vista
Zaleca si take pobranie pakietu .NET Framework SDK (Software Development Kit).
Pakiet SDK zawiera dodatkow dokumentacj, przykadowe fragmenty kodu oraz narzdzia do budowania aplikacji ASP.NET. Wspomniany pakiet SDK jest dostpny do
pobrania na witrynie internetowej Microsoft MSDN znajdujcej si pod adresem http://
msdn.microsoft.com/.
Instalacja pakietu Visual Web Developer Express moe zosta przeprowadzona na komputerze z zainstalowanym pakietem Visual Studio .NET 2003. Obydwa rodowiska programistyczne mog ze sob koegzystowa bez problemw.
Co wicej, ten sam serwer sieciowy moe obsuy strony utworzone zarwno w technologii ASP.NET 1.1, jak i ASP.NET 2.0. Kada wersja platformy .NET jest zainstalowana
w nastpujcym katalogu:
C:\WINDOWS\Microsoft.NET\Framework
67
Przykadowo uruchomienie z wiersza polecenia poniszego polecenia spowoduje wczenie okrelonej wersji ASP.NET dla katalogu wirtualnego o nazwie MojaAplikacja:
aspnet_regiis -s W3SVC/1/ROOT/MojaAplikacja
Podsumowanie
W rozdziale znalaz si wstp do platformy ASP.NET 2.0. W pierwszej kolejnoci zbudowalimy prost stron ASP.NET. Poznalimy trzy gwne elementy strony ASP.NET:
dyrektywy, bloki deklarowania kodu oraz bloki generowania strony.
Nastpnie dokonalimy analizy platformy .NET. Dowiedzielimy si przy okazji o istnieniu okoo 13 000 klas zawartych w bibliotece Framework Class Library oraz o funkcjach
rodowiska Common Language Runtime.
Rozdzia ten zaprezentowa rwnie oglny opis kontrolek ASP.NET. Dowiedzielimy si
o rnych grupach kontrolek, ktre zostay umieszczone w platformie .NET. Nauczylimy
si take sposb obsugiwa zdarzenia kontrolek i wykorzystywa zalety stanu widoku.
Przeanalizowalimy rwnie strony ASP.NET i dowiedzielimy si, w jaki sposb strony
ASP.NET s dynamicznie kompilowane w trakcie pierwszego dania ich wywietlenia.
Poznalimy techniki podziau strony ASP.NET skadajcej si z pojedynczego pliku na
stron ukrytego kodu, a ponadto, nauczylimy si metod debugowania i ledzenia wykonywania strony ASP.NET.
Na kocu zostay przedstawione kwestie zwizane z uruchomieniem platformy ASP.NET.
Dowiedzielimy si, w jaki sposb mapowa rne katalogi wirtualne do rnych wersji
platformy ASP.NET.