Platformy Technologiczne ASP.NET

61
PLATFORMY TECHNOLOGICZNE ASP.NET mgr inż. Tomasz Gawron

description

Platformy Technologiczne ASP.NET. mgr inż. Tomasz Gawron. Protokół HTTP. Protokół zaprojektowany jako bezstanowy (brak pojęcia sesji grupującej interakcje). Interakcja przeglądarki z serwerem WWW odbywa się według schematu żądanie - odpowiedź: Serwer nadsłuchuje żądania, - PowerPoint PPT Presentation

Transcript of Platformy Technologiczne ASP.NET

Page 1: Platformy Technologiczne ASP.NET

PLATFORMY TECHNOLOGICZNEASP.NET

mgr inż. Tomasz Gawron

Page 2: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

2

Protokół HTTP Protokół zaprojektowany jako bezstanowy (brak

pojęcia sesji grupującej interakcje). Interakcja przeglądarki z serwerem WWW odbywa się według schematu żądanie - odpowiedź: Serwer nadsłuchuje żądania, Klient otwiera połączenie – serwer odpowiada

potwierdzeniem, Żądanie HTTP jest wysyłane przez klienta, Serwer przekazuje w odpowiedzi żądane zasoby lub

informację o ich niedostępności, Połączenie zostaje zamknięte przez serwer

Protokół określa format komunikatu żądania oraz odpowiedzi

Domyślny numer portu: 80

Klient Serwer

SYN()

SYN / ACK()

ACK()

żądanie()

ACK()

odpowiedź()

ACK()

FIN()

ACK()

FIN()

ACK()

Page 3: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

3

Struktura komunikatu HTTP

Formaty żądania i odpowiedzi są podobne: wiersz początkowy (zależny od typu komunikatu) dowolna liczba wierszy nagłówków typy nagłówków: General, Request, Response, Entity pusta linia (CRLF) – dla zaznaczenia końca sekcji nagłówkowej opcjonalne ciało komunikatu

Request Line • Method• Request URI• HTTP Version Info

Response Line• HTTP Version Info• Status Code• Description

Headers

Message BodyCRLF

Page 4: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

4

Rodzaje metod komunikatów GET

Do pobrania informacji poprzez podanie URI wymaganego zasobu Parametry dołączane do URI (po znaku zapytania) Jeżeli adres wskazuje na proces wykonujący przetwarzanie danych to wynikiem

jest wytworzona przez ten proces informacja Możliwość warunkowego wykonania metody, gdy spełniony jest warunek

podany w dodatkowych nagłówkach (If-Modified-Since, If-Match, …) Ograniczona długość przekazywanych parametrów (~240 znaków)

POST Przesłanie danych do zasobu o podanym URI, dane zawarte są w treści żądania

(większa ilość przesyłanych danych) Opisane dodatkowo nagłówkami Content-Type oraz Content-Length Odwołanie do zasobu (URI) wskazuje zwykle na program obsługujący, nie zaś

na pobierany zasób; odpowiedź jest zwykle dokumentem generowanym HEAD

Jak GET, ale służy jedynie sprawdzeniu dostępności zasobu: zwracany w odpowiedzi tylko nagłówek dokumentu

Page 5: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

5

Rodzaje metod komunikatów PUT

Wymusza zapisanie zawartości żądania pod wskazanym adresem URI OPTIONS

Żądanie przesłania informacji o opcjach związanych z wyspecyfikowanym zasobem. Pozwala określić możliwości serwera bez wywoływania akcji na zasobie.

DELETE Do usunięcia wyspecyfikowanego zasobu

TRACE Do zdalnego wywoływania śledzenia wysłanego żądania. Pozwala

klientowi zobaczyć co zostało odebrane po drugiej stronie; użycie nagłówka Via daje informację o ścieżce wysłanego żądania

CONNECT Do użytku z serwerami proxy, które mogą się przełączać dynamicznie

w stan tunelowania

Page 6: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

6

Elementy komunikatu odpowiedzi Kody statusu

Nagłówki odpowiedzi

1xx kody informacyjne, klient powinien odpowiedzieć na nie wykonując jakąś czynność,

2xx żądanie zostało poprawnie obsłużone

3xx plik został przeniesiony; w takim przypadku odpowiedź zazwyczaj zawiera nagłówek Location określający nowe położenie pliku

4xx błąd klienta (np. 400 - nieprawidłowe zapytanie, 403 - dostęp do zasobu zabroniony, 404 - zasób nie znaleziony)

5xx błąd serwera

Content-Encoding określa sposób kodowania dokumentu

Content-Length ilość bajtów przesyłanych w odpowiedzi

Content-Type typ MIME zwracanego dokumentu

Expires czas, po którym dokument należy uznać za nieaktualny i usunąć z pamięci podręcznej przeglądarki

Last-Modified czas ostatniej modyfikacji dokumentu

Location adres URL pod który przeglądarka powinna przesłać kolejne żądanie

Refresh ilość sekund, po upłynięciu których przeglądarka powinna ponownie odświeżyć stronę. Nagłówek może także zawierać adres URL strony, którą przeglądarka ma pobrać

Set-Cookie cookie, które przeglądarka powinna zapamiętać

WWW-Authenticate typ oraz obszar autoryzacji jaki przeglądarka powinna podać w nagłówku Authorization przesłanym w kolejnym żądaniu

Server rodzaj oprogramowania serwera (analogicznie jak User-Agent)

Page 7: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

7

Aplikacje ASP.NET Obiektowe środowisko projektowania dynamicznych aplikacji WWW Rozdzielenie projektowania prezentacji strony od kodu logiki biznesowej

(logika strony) Użycie komponentów dostarczanych przez .NET Framework - kontrolki Web,

HTML działające po stronie serwera Kod strony jest kompilowany przy pierwszym żądaniu strony ASP.NET (.aspx) Możliwość użycia języków programowania VB.NET, C#

Organizacja UI - strony główne i strony z treścią Zarządzanie stanem, bezpieczeństwem

Aplikacja ASP.NET może składać się elementów: Formularze Internetowe (Web Form) – pliki z rozszerzeniem (.aspx) Usługi Web (Web services) – pliki z rozszerzeniem (.asmx) Pliki logiki aplikacji – pliki z rozszerzeniem (.vb lub .cs) Globalnej klasy aplikacji (.asax) Pliku konfiguracyjnego Web.config innych pliki typu: strona HTML, arkusz CSS

Web Client

Operating System

ASP.NETApplicationsIIS

Asp.Net Engine

.NETFramework

HTTP

Page 8: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

8

Pliki konfiguracyjne i katalogi Pliki konfiguracyjne

Machine.config - ustawienia dotyczą wszystkich aplikacji na komputerze lokalnym

Web.config - ustawienia dotyczą tylko wybranej aplikacji Katalogi aplikacji

Bin - zawiera wszystkie prekompilowane podzespoły (assemblies) wykorzystywane w aplikacji

App_Browsers - zawiera tzw. „Browser Capabilities” – specjalne pliki, w których definiuje się, jakich funkcjonalności od klienta przesyłającego w żądaniu określony łańcuch USER-AGENT może oczekiwać serwer.

App_Code - zawiera pliki źródłowe klas wykorzystywanych na stronach. App_Data - zawiera pliki z danymi dla aplikacji np. plikami baz danych Microsoft

Access (.mdb), XML itp. App_Themes - zawiera pliku definiujące wygląd strony internetowej i kontrolek. App_GlobalResources - zawiera globalne pliki zasobów aplikacji (.resx) App_LocalResources - zawiera pliki zasobów dla określonej strony (.resx). App_WebReferences - zawiera pliki połączenia serwisów Web z aplikacją (.wsdl)

Page 9: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

9

ASP.NET - od wewnątrz Kod zawarty w aplikacjach i usługach WWW opartych na ASP.NET

jest wykonywany w pojedynczej instancji procesu roboczego aspnet_wp.exe

Żądania dotyczące plików ASP.NET są obsługiwane przez rozszerzenie ASP.NET ISAPI działające w przestrzeni adresów procesu IIS (inetinfo.exe)

Komunikacja pomiędzy tym procesem a procesem roboczym ASP.NET odbywa się za pomocą potoku nazwanego

Izolacja aplikacji polega na utworzeniu odrębnych domen aplikacji w ramach procesu roboczego (po jednej dla każdego katalogu wirtualnego IIS lub usługi WWW opartej na ASP.NET)

Page 10: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

10

Web Form Sekcja dyrektyw strony

Konfigurują środowisko, w którym będzie pracowała strona. Określają sposób przetwarzania strony przez moduł wykonawczy HTTP. Umożliwiają importowanie przestrzeni nazw, ładowanie podzespołów, których nie ma w danym momencie

w GAC, rejestrowanie nowych kontrolek z niestandardowymi nazwami tagów i prefiksami przestrzeni nazw. Sekcja kodu

Opatrywana tagiem <script> zawiera kod związany z daną stroną. Zawiera zwykle procedury obsługi zdarzeń i funkcje pomocnicze. Kod aplikacji może zostać umieszczony bezpośrednio w pliku .aspx tzw. Code Inline lub w dodatkowym pliku tzw. Code Behind.

Sekcja układu strony Zawiera reprezentację widoku strony w postaci zbioru kontrolek serwerowych, tekstu oraz znaczników

HTML, który jest uszczegóławiany przez kod.

Form1.aspx Form1.aspx Form1.aspx.vbor Form1.aspx.cs

<tags> <tags>

codecode

Separate filesSingle file

Page 11: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

11

Web Form Formularz Web składa się z znaczników ASP.NET

oraz logiki przetwarzania Rozdzielnie kodu obsługi strony od zawartości

interfejsu użytkownika Kod inline - kod znaczników i kod aplikacji (C#, VB)

współistnieją w pojedynczym pliku .aspx Kod ukryty - kod znaczników i kod aplikacji są w

odrębnych plikach (.aspx, .aspx.cx, dll) Kod ukryty - klasy częściowe – plik z kodem ukrytym

jest implementowany za pomocą klas częściowych Programiści i projektanci UI mogą pracować

niezależnie

Page 12: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

12

Składowe strony ASP.NET Sekcja dyrektyw strony

Konfiguruje środowisko, w którym będzie pracowała strona Określa przestrzeń nazw, języka programowania, sposób przetwarzania

strony przez moduł wykonawczy HTTP (parametrów protokołu), Umożliwia importowanie przestrzeni nazw, ładowanie podzespołów, których

nie ma w danym momencie w GAC, rejestrowanie nowych kontrolek z niestandardowymi nazwami tagów i prefiksami przestrzeni nazw.

<%@ dyrektywa atrybut=”wartość” [, atrybut=wartość] %> Sekcja kodu

Opatrywana tagiem <script> zawiera kod związany z daną stroną. Zawiera zwykle procedury obsługi zdarzeń i funkcje pomocnicze.

Sekcja układu strony (page layout) Zawiera reprezentację widoku strony, który jest uszczegóławiany przez

kod. Zawiera kontrolki serwerowe, ciągi tekstu oraz znaczniki języka HTML. Wygląd strony może być zdefiniowany na stronie poprzez ustawienie właściwości indywidualnych elementów lub przy pomocy arkuszy styli.

Page 13: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

13

Model strony ASP.NET

HTML Block

Other Objects

Server Control

HTML BlockHTML\Text

<p>This is some text</p><a href="mypage.aspx">link text</a><img src="mypic.gif align="left" />

<input type="text" name="mytext" size="40" runat="server" /><input type="submit" name="gobtn" value="Go" runat="server" />

<%@Import Namespace="System.Data" %><%@Import Namespace="System.XML" %>

<%@Page Language="C#" Debug="True" ...="etc" %>Page Object

Page 14: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

14

Strony ASP.NET Strona prezentacyjna ASP.NET: widok

HTML<%@ Page Language=„c#" Codebehind="WebForm1.aspx.cs"

SmartNavigation="true"%><html>

<body ms_positioning="GridLayout"> <form id="Form1" method="post" runat="server">

… </form></body>

</html>

Page 15: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

15

Strony ASP.NET Code behind

using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;

namespace WebApplication1{

/// <summary>/// Summary description for WebForm1./// </summary>partial class WebForm1 : System.Web.UI.Page{private void Page_Load(object sender, System.EventArgs e){// Put user code to initialize the page here}#region Web Form Designer generated code

}

Page 16: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

16

Cykl życia strony Przeglądarka użytkownika odwołuje się do

pliku o rozszerzeniu .aspx ASP.NET odczytuje plik z systemu plików

serwera ASP.NET przegląda wszystkie znaczniki w

pliku i ładuje je do pamięci jeśli znacznik zawiera atrybut runat=„server”,

ASP.NET ładuje odpowiednią kontrolkę serwerową. Typ kontrolki jest określony przez nazwę znacznika.

znaczniki niezawierające atrybutu runat=„server” stanowią zwykły kod HTML. ASP.NET w niezmienionej postaci przekaże je do odbiorcy

Po załadowaniu wszystkich znaczników do pamięci ASP.NET wykonuje odpowiedni kod programu każdej z kontrolek serwerowych

Po zakończeniu przetwarzania kodu wszystkich kontrolek serwerowych, ASP.Net wywołuje metodę Render każdej kontrolki

Po wygenerowaniu strony ASP.NET uwalnia pamięć

ASPXFile

Request

ASPX

EngineParse

Gen’dPageClass

Generate

Response

RequestInstanti

ate

Response

Code-behindclass

Page

DLL Instantiate,

Process and

Render

Compile

Page 17: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

17

Dyrektywy strony Składnia: <%@ dyrektywa atrybut=”wartość” [, atrybut=wartość] %>

@Page - definiuje atrybuty strony wykorzystywane przez kompilator stron. Umożliwia określenie parametrów protokołu HTTP, określenie przestrzeni nazw, definicję języka programowania.

@Control – definiuje atrybuty kontrolki użytkownika (user control) @Register – tworzy powiązanie pomiędzy nazwa pliku kontrolki

użytkownika a nazwą odpowiadającego jej znacznika. @Import - dołącza jawnie do strony przestrzeń nazw, co umożliwia

elementom strony dostęp do wszystkich klas i interfejsów zdefiniowanych w tej przestrzeni

@Assembly - deklaruje stworzenie połączenia pomiędzy podzespołem a bieżącą stroną, co pozwala na wykorzystywanie na stronie klas i interfejsów zdefiniowanych w podzespole

@OutputCache - deklaruje sposób obsługi buforowania wyjścia dla strony

Page 18: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

18

Klasyfikacja kontrolek serwerowych Kontrolki serwerowe HTML (HTML Server Control) - z atrybutem runat=„server”

Kontrolki serwerowe Web (Web Server Control) – <asp:xx …runat=„server”</asp:xx> Standardowe – etykiety, pola tekstowe, listy, … Data – odczyt informacji z pojemników danych Navigation – kontrolki wyświetlające elementy nawigacyjne, takie jak ścieżki, menu

różnych typów Login – udostępniające funkcje sterowania dostępem, rejestracji użytkownika Walidacji danych WebParts – umożliwiające wydzielanie części strony Web jako obszaru dynamicznego,

który autoryzowani użytkownicy mogą dostosować do swoich preferencji

Kontrolki użytkownika (Web User Controls)

Wbudowane kontrolki Web (WebCustom Controls)

Page 19: Platformy Technologiczne ASP.NET

19

Platformy Technologiczne 2012

Zdarzenia w modelu klient - serwer Klient:

Zazwyczaj używane tylko z kontrolkami HTML

Interpretowane przez przeglądarkę

Brak dostępu do zasobów serwera

Używa <SCRIPT language="language">

Serwer: Używane z każdym typem

kontrolki Kod jest kompilowany i

uruchamiany na serwere Dostęp do zasobów serwera Używa<SCRIPT

language="vb" runat="server"> lub <SCRIPT language=“cs" runat="server">

Internet .HTM Pages

Internet.ASPX Pages

Page 20: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

20

Postback Postback polega na powracaniu do określonej strony WWW w czasie

trwania sesji z serwerem ASP.NET Postback model – mechanizm przesyłania stanu kontrolekze

strony web do serwera oraz odtwarzaniu tych wartości gdy serwer zwróci odpowiedź Pozwala zachować właściwości kontrolkom pomiędzy wieloma odwołaniami

do serwera Cross-Page Postback – możliwość skonfigurowania kontrolek do

przesyłania żądań na inne strony IsPostBack – właściwość strony umożliwiająca programowe rozróżnienie

między żądaniami przesyłanymi zwrotnie a pierwszymi wywołaniami strony

AutoPostBack – właściwość kontroluje automatyczne odesłanie stanu kontrolki do serwera

EnableViewState – umożliwia zachowanie stanu kontrolki po przesłaniu żądania do serwera

Page 21: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

21

Zdarzenia i PostbackRound trip event (natychmiastowe odwołanie do serwera)

Click <asp:Button Text="click me" Runat="server"

OnClick="DoClick" />

Delayed event (zdarzenie obsłużone przy kolejnym odwołaniu do serwera)

TextChanged <asp:TextBox Runat="server"

OnTextChanged="DoTextChanged" />SelectedIndexChanged <asp:ListBox Rows="3" Runat="server"

OnSelectedIndexChanged="DoSIChanged" />

AutoPostBack (wymusza natychmiastowe odwołanie do serwera)

TextChanged <asp:TextBox Runat="server"AutoPostBack="true"OnTextChanged="DoTextChanged" />

Page 22: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

22

Cross – Page Postback Strony mogą wykonać post back do innych stron Wykorzystywane właściwości:

control.PostBackUrl – adres docelowy żądania zwrotnego Page.PreviousPage – zwraca referencję do strony, która generowała

żądanie zwrotne PreviousPage.IsCrossPagePostBack – informacja, czy wystąpiło

żądanie zwrotne z innej strony

<html> <body> <form runat="server"> <asp:TextBox ID="Input" RunAt="server" /> <asp:Button Text="Test" PostBackUrl="PageTwo.aspx" RunAt="server" /> </form> </body></html>

Page 23: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

23

Przetwarzanie kontrolekInit

Load

PreRender

SaveViewState

Render

Dispose

Inicjalizacja, dodanie do drzewa

Wykonanie kodu użytkownikaCreateChildControls() sprawdza renderowanie dzieci

Zapisanie aktualnego stanu

Renderowanie odpowiedziEach control renders itself to the ResponseStrony i kontrolki są usuwane

Init

Load

PreRender

SaveViewState

Render

Dispose

LoadViewState

Postback data

Postback events

Ostatni stan pobrany z ViewState

Przesłane dane są przekazane do powiązanych kontrolek

Zdarzenia uruchamianie zgodnie z kolejnoscią w drzewie; Zdarzenie, które wywołało postback wykonywane jest jako ostatnie

Page 24: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

24

Obsługa błędów Przekierowanie użytkownika na stronę błędu

Konfiguracja na poziomie strony atrybut errorPage w dyrektywie Page własność Page.ErrorPage

Konfiguracja na poziomie aplikacji sekcja customErrors w pliku Web.config

Przechwytywanie i obsługa wyjątków Obsługa wyjątków na poziomie lokalnym Obsługa wyjątków na poziomie strony Obsługa wyjątków na poziomie aplikacji

Śledzenie wykonywania aplikacji – tracing Śledzenie wykonywania na poziomie strony Śledzenie wykonywania na poziomie aplikacji

Page 25: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

25

Kontrola zdarzeń aplikacji

ASP.NET Web Server

Client

ASP.NET HTTP Runtime

IIS

Application_BeginRequest

Application_AuthenticateRequest

Application_AuthorizeRequest

Application_ResolveRequestCache

Application_AquireRequestState

Application_PreRequestHandlerExecute

Application_EndRequest

Application_UpdateRequestCache

Application_ReleaseRequestState

Application_PostRequestHandlerExecute

Page execution

Request Response

Page 26: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

26

Zdarzenia aplikacjiZdarzenie OpisBeginRequest Zgłaszane w momencie rozpoczynania obsługi żądaniaAuthenticateRequest Zgłaszane gdy żądanie HTTP gotowe jest do uwierzytelnienia AuthorizeRequest Zgłaszane gdy żądanie HTTP gotowe jest do autoryzacjiResolveRequestCache Używane przez moduł pamięci podręcznej w celu obsługi danego żądania jeśli jest już

przechowywane w pamięci podręcznej AcquireRequestState Zgłaszane gdy aplikacja uzyska informacje o stanie (np. sesji) związanym z danym

żądaniemPreRequestHandlerExecute Zgłaszane bezpośrednio przed rozpoczęciem realizacji procedury obsługi żądań przez

HTTP handlerPostRequestHandlerExecute Zgłaszane bezpośrednio po zakończeniu realizacji procedury obsługi żądań przez

HTTP handlerReleaseRequestState Zgłaszane w celu zapamiętania danych o stanie sesji dla danego żądania

UpdateRequestCache Zgłaszane gdy aplikacja uaktualnia pamięć podręczną dla danego żądania

EndRequest Zgłaszane w momencie zakończenia obsługi żądania

PreSendRequestContent Zgłaszane bezpośrednio przed wysłaniem zawartości żądania HTTP

PreSendRequestHeaders Zgłaszane bezpośrednio przed wysłaniem nagłówków żądania HTTP

Error Zgłaszane w momencie wystąpienia jakiegokolwiek błędu

Page 27: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

27

Global.asaxusing System;using System.Collections;using System.ComponentModel;using System.Web;using System.Web.SessionState;

namespace BenefitsCS { /// <summary> /// Summary description for Global. /// </summary>public class Global : System.Web.HttpApplication{ /// <summary> /// Required designer variable. /// </summary>private System.ComponentModel.IContainer components = null;public Global(){ InitializeComponent();}

protected void Application_Start(Object sender, EventArgs e){}…

protected void Session_Start(Object sender, EventArgs e){}

protected void Application_BeginRequest(Object sender, EventArgs e){}protected void Application_EndRequest (Object sender, EventArgs e){}protected void Application_AuthenticateRequest (Object sender, EventArgs e){}protected void Application_Error(Object sender, EventArgs e){}protected void Session_End(Object sender, EventArgs e){}protected void Application_End(Object sender, EventArgs e){}

Page 28: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

28

Nawigacja i logowanie Kontrolki ułatwiają nawigację pomiędzy stronami WWW

Plik .sitemap – opis struktury logicznej witryny (mapa witryny) to lista stron i adresów URL Menu - wyświetla rozwijane lub wyskakujące menu w oparciu o dane przekazane przez SiteMapDataSource TreeView – wyświetla dane jako hierarchiczny układ węzłów, które można rozwijać lub ukrywać; SiteMapPath - pokazuje ścieżkę dostępu do aktualnej strony poprzez pośredniczące strony

SiteMapDataSource – dostęp do hierarchicznej listy łączy, zapisanej w pliku XML o domyślnej nazwie web.sitemap

Login controls Kontrolki dla logowania, tworzenia użytkowników, odzyskiwania haseł, i inne...

<siteMap><siteMapNode title="Home" url="default.aspx">

<siteMapNode title="Tab1" url="subdir/default.aspx"><siteMapNode title="SubPage" url="subdir/foo.aspx" />

</siteMapNode><siteMapNode title="Tab2" url="Tab/default.aspx">

<siteMapNode title="SubPage" url="Tab/foo.aspx“/></siteMapNode>

</siteMapNode></siteMap>

Page 29: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

29

Przesyłanie informacji między stronami

Metoda GET lub POST Przesyłanie informacji

Response.Redirect("Info.aspx?imie=" + imieTextBox.Text

+ "&nazwisko=" + nazwiskoTextBox);

Pobieranie informacji przesłanych Request.Params["imie"]

Mechanizm Cross-Page Postback

Page 30: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

30

Odwołanie do kontrolki na poprzedniej stronie

<html> <body> <form runat="server"> <asp:TextBox ID="Input" RunAt="server" /> <asp:Button Text="Test" PostBackUrl="PageTwo.aspx" RunAt="server" /> </form> </body></html>

<html> <body> <asp:Label ID="Output" RunAt="server" /> </body></html>

<script language="C#" runat="server">void Page_Load (Object sender, EventArgs e){ if (PreviousPage != null && PreviousPage.IsCrossPagePostBack) { TextBox input = (TextBox) PreviousPage.FindControl ("Input"); Output.Text = "Hello, " + input.Text; }}</script>

Page 31: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

31

Walidacja danych Obiekty sprawdzające poprawność danych wejściowych

wprowadzanych przez użytkownika

RequiredFieldValidator sprawdzający czy w danym polu została wprowadzona jakakolwiek

wartość RangeValidator

sprawdzający czy dane znajdują się w określonym przedziale wartości CompareValidator

porównujący wartości dwóch pól tekstowych CustomValidator

sprawdzanie poprawności określone przez algorytm użytkownika RegularExpressionValidator

sprawdzanie poprawności „ na dopasowanie wzorca” określonego wyrażeniem regularnym

Page 32: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

32

Dodawanie walidatora Dodanie kontrolki sprawdzającej Wybór kontrolki wejściowej do sprawdzania Ustalenie właściwości kontroli

Display: sposób wyświetlania kontrolki sprawdzania poprawności: Static - do strony zostanie dodane miejsce przeznaczone na wyświetlanie informacji Dynamic - miejsce na wyświetlanie informacji kontrolki zostanie dodane

dynamicznie, jeśli dane okażą się niepoprawne None – wartość atrybutu ErrorMessage nigdy nie będzie wyświetlana

<asp:Type_of_Validator id="Validator_id"runat="server"ControlToValidate="txtName"ErrorMessage="Message_for_error_summary"Display="static|dynamic|none"Text="Text_to_display_by_input_control">

</asp:Type_of_Validator>

<asp:TextBox id="txtName" runat="server" />

Page 33: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

33

ValidationSummary Wyświetla listę komunikatów o błędach, zgłoszonych przez znajdujące się na stronie

kontrolki sprawdzania poprawności Może wyświetlać zawartość atrybutów text i error messages Używa Text="*" do wskazania lokalizacji błędu

DisplayMode – format wyświetlania podsumowania; List - jako listę w osobnych wierszach, BulletList- jako listę wypunktowaną, SingleParagraph - w jednym paragrafie

EnableClientScript - włączenie/wyłączenie kodu generowanego po stronie klienta z podsumowania błędów sprawdzania poprawności

ShowSummary – gdy true, podsumowanie zostanie wyświetlone na Web Form …

<asp:ValidationSummary id="valSummary"runat="server"HeaderText="These errors were found:"ShowSummary="True" DisplayMode="List"/>

Page.IsValid Propertyprivate void cmdSubmit_Click(object s, System.EventArgs e){ if (Page.IsValid)

{ Message.Text = "Page is Valid!";// Perform database updates or other logic here

}}

Page 34: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

34

Strony wzorcowe Strona wzorcowa - umożliwia sterowanie wspólnym wyglądem dla całej

witryny internetowej; zawiera tylko wspólne elementy Strona zawartości - miejsce w którym ma zostać umieszczona treść strony

zawartości jest określone przez specjalną kontrolkę ContentPlaceHolder

Plik .master zawiera szablon wykorzystywany przez wszystkie strony aplikacji

Inne strony zawierają się jako kontrolki w stronie „Master Page”

Strona wzorcowa

ContentPlaceHolder1

ContentPlaceHolder2

Strona zawartości

Content1

Content2+ =Strona w

przeglądarce

ContentPlaceHolder1

ContentPlaceHolder2

Page 35: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

35

Tworzenie strony wzorcowej Dodawanie strony wzorcowej do projektu

za pomocą menu Website\Add New Item, wybierając szablon Master Page Dodawanie strony zawartości

Dodatkowo zaznaczenie opcji Select master page. Strona zawartości korzystająca z tej strony wzorcowej musi zawierać kontrolkę Content, która atrybut ContentPlaceHolderID jest równy wartości ContentPlaceHolderID strony wzorcowej.

Modyfikowanie istniejącej strony Web na stronę używającą strony wzorcowej<%@ Master %>

<asp:ContentPlaceHolder ID="Main" RunAt="server" />

<%@ Page MasterPage- File="Site.master" %>

<asp:Content ContentPlaceHolderID= "Main" RunAt="server" />

</asp:Content>

Site.master default.aspx http://.../default.aspx

Page 36: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

36

Definiowanie i korzystanie z szablonu

<%@ Master %><html> <body> <!-- Banner shown on all pages that use this master --> <table width="100%"> <tr> <td bgcolor="darkblue" align="center"> <span style="font-size: 36pt; color: white">ACME Inc.</span> </td> </tr> </table>

<!-- Placeholder for content below banner --> <asp:ContentPlaceHolder ID="Main" RunAt="server" /> </body></html>

<%@ Page MasterPageFile="~/Site.master" %>

<asp:Content ContentPlaceHolderID="Main" RunAt="server"> This content fills the place holder "Main" defined in the master page</asp:Content>

Page 37: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

37

Motywy i skórki Mechanizm stosowany dla kontrolek, stron i aplikacji polegający na

grupowaniu właściwości inicjujących kontrolki Skórki to wizualne atrybuty kontrolek

narzucają wygląd kontrolek, stron i całych aplikacji dodawane deklaratywnie lub programistycznie fizycznie przechowywane w plikach .skin domyślne i nazwane skórki

Motywy to kolekcje skórek fizycznie przechowywane w podkatalogu motywów globalne i lokalne motywy

<%@ Page Theme="BasicBlue">

Przypisanie motywu do strony<configuration> <system.web> <pages theme="BasicBlue" /> </system.web></configuration>

Przypisanie motywu do aplikacji

Page 38: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

38

Lokalizacja ASP.NET wspiera budowę serwisów wielojęzycznych poprzez

mechanizm zasobów (resources) 2 typy zasobów:

/App_LocalResources – dotyczące pojedynczej strony /App_GlobalResources – dotyczące całości serwisu

Prosta struktura: klucz=wartość Typy zasobów:

Ciągi tekstowe Grafika (obrazy i ikony) Pliki tekstowe

Wykorzystanie zasobów:<asp:Label runat=„server”

Text=„<%$ Resources: PlikRes, Etykieta1_Klucz %>” />

Mechanizm lokalizacji domyślnie wykorzystuje ustawienia językowe przeglądarki

Page 39: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

39

Wiązanie danych Wiązanie danych – proces uzyskiwania danych ze źródła i

dynamicznego wiązania ich z pewną właściwością elementu wizualnego (kontrolki)

Kontrolki serwera można powiązać logicznie ze źródłem danych, używając zbioru właściwości takich jak Text, DataSource, DataTextField

Powiązanie kontrolki z danymi uaktywniane jest poprzez wywołanie metody DataBind.

Źródło danych – obiekt implementujący interfejs ICollection Dane reprezentowane przez klasy kolekcji .NET (tablice, słowniki, listy,

sterty, kolejki) Struktury danych definiowane przez użytkowników Dane reprezentowane przez klasy bazodanowe (DataTable, DataSet,

DataReader) Kontrolki źródeł danych Widoki reprezentowane przez klasę DataView

Page 40: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

40

Kontrolki prezentacji i źródeł danych

Wyświetlanie informacji: GridView: Wyświetlanie rekordów w formie arkusza, umożliwia

modyfikację i usuwanie danych DetailsView: wyświetla jeden rekord; wstawianie, modyfikacja, usuwanie FormView: wyświetla jeden rekord w sformatowanej postaci; wstawianie,

modyfikacja, usuwanie …

Kontrolki źródeł danych: SqlDataSource: umożliwia odczytywanie i zmianę informacji w bazie

danych MS SQL XMLDataSource: umożliwia odczytywanie i zmianę informacji w plikach

XML ObjectDataSource: umożliwia odczytywanie i zmianę danych zawartych w

niestandardowych obiektach SiteMapDataSource: odczytywanie informacji z pliku mapy witryny

Page 41: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

41

Wiązanie danych prostych Łączenie kontrolek jest użyteczne w

prostym przekazywaniu danych między kontrolkami

Drugim sposobem jest DataBind

<asp:DropDownList id="lstOccupation" autoPostBack="True" runat="server" >You selected: <asp:Label id="lblSelectedValue" Text="<%# lstOccupation.SelectedItem.Text %>" runat="server" />

private void Page_Load(object sender, System.EventArgs e){ lblSelectedValue.DataBind();}

Page 42: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

42

Wiązanie przez właściwości Używając kolekcji DataBindings możemy

przypisywać właściwości ze źródła danych do kontrolki

txtCustomerAddress.DataBindings.Add("Text", dsNorthwindData1.Customers, "Address");

txtCustomerCity.DataBindings.Add("Text", dsNorthwindData1.Customers, "City");

Właściwość kontolki do którejprzyisujemy wartość

KolumnaTabela źródła danych

Page 43: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

43

Wiązanie danych złożonych Wiązanie danych złożonych - gdy wiążemy kontrolkę listy

(DropDownList,CheckBoxList, RadioButtonList, ListBox) lub kontrolkę iteracyjną (Repeater, DataList, DataGrid) z jedną lub kilkoma kolumnami danych

Właściwość Opis

DataSource • DataSet zawierający dane

DataMember • DataTable w DataSet

DataTextField • Wyswietlane pole z DataTable

DataValueField • Pole, które po zaznaczeniu staje się wartością

// data loadingDataTable __dataTable;__dataTable = __dataHandler.Load();

// data bindingDDList.DataSource = __dataTable;DDList.DataTextField = "Name"; DDList.DataValueField = "empID";DDList.DataBind();

Page 44: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

44

Kontrolki wyświetlające dane

Nazwa OpisGridView Wyświetla wiele rekordów w formie arkusza (modyfikacja,

usuwanie)DetailsView Wyświetla jeden rekord na raz, używając prostych instrukcji

HTML (wstawianie, modyfikacja, usuwanie)

FormView Wyświetla jeden rekord w sformatowanej postaci(wstawianie, modyfikacja, usuwanie)

DataList Powtarza zdefiniowany przez projektanta szablon dla każdego rekordu z źródła danych

Repeater Zbliżona do DataList , ale nie zawiera własnych elementów HTML.

Page 45: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

45

GridView Zbliżona do kontrolki DataGrid

Generuje zbiór danych w postaci tabel HTML Wbudowane funkcje: sortowanie, stronicowanie,

wybieranie, modyfikowanie i kasowanie Bogaty asortyment typów komórek: ImageFields,

CheckBoxFields Wiele możliwości modyfikacji UI

<asp:SqlDataSource ID="Employees" RunAt="server" ConnectionString="server=localhost;database=northwind;..." SelectCommand="select lastname, firstname, title from employees" />

<asp:GridView DataSourceID="Employees" Width="100%" RunAt="server" />

Page 46: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

46

Typy komórek GridView

Nazwa OpisBoundField Generuje kolumny z tekstemButtonField Generuje kolumny z przyciskami (push button,

image, or link)CheckBoxField Generuje kolumny z polem wyboru dla typu BoolCommandField Generuje kontrolki dla wyboru i edycji danych w

GridViewHyperLinkField Generuje kolumny z łączamiImageField Generuje kolumny z obrazkamiTemplateField Generuje kolumny z użyciem szablonów HTML

Page 47: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

47

Typy komórek GridView

<asp:SqlDataSource ID="Employees" RunAt="server" ConnectionString="server=localhost;database=northwind;..." SelectCommand="select photo, lastname, firstname, title from employees" />

<asp:GridView DataSourceID="Employees" Width="100%" RunAt="server" AutoGenerateColumns="false" > <Columns> <asp:ImageField HeaderText="" DataField="photo" /> <asp:TemplateField HeaderText="Name"> <ItemTemplate> <%# Eval ("firstname") + " " + Eval ("lastname") %> </ItemTemplate> </asp:TemplateField> <asp:BoundField HeaderText="Title" DataField="title" /> </Columns></asp:GridView>

Page 48: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

48

Kontrolki źródła danych Zapełnienie kontrolek danymi poprzez wiązanie nie

bezpośrednio z kolekcją danych, ale z kontrolką do obsługi źródła danych

Nazwa PrzeznaczenieSqlDataSource Łączy kontrolki z bazami SQLAccessDataSource

Łączy kontrolki z bazami Access

XmlDataSource Łączy kontrolki z danymi XMLObjectDataSource

Łączy kontrolki z komponentami

SiteMapDataSource

Łączy kontrolki nawigacyjne z danymi nawigacyjnymi (mapą witryny)

Page 49: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

49

SqlDataSource Deklaratywne podpinanie danych do baz SQL Dwustronne podpinanie danych

SelectCommand InsertCommand, UpdateCommand i DeleteCommand

Możliwość umieszczania wyników zapytania w pamięci podręcznej Cache

Parametryzowane operacje

<asp:SqlDataSource ID="Titles" RunAt="server" ConnectionString="server=localhost;database=pubs;integrated security=true" SelectCommand="select title_id, title, price from titles" />

<asp:DataGrid DataSourceID="Titles" RunAt="server" />

Page 50: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

50

SqlDataSource Najważniejsze właściwości:

ConnectionString – ciąg znaków połączenia umożliwiający dostęp do bazy danych,

SelectCommand, InsertCommand, UpdateCommand, DeleteCommand – ciąg znaków, które zawierają polecenie SQL lub nazwa składowanej procedury

DataSourceMode – tryb pobierania danych przez polecenie Select (DataSet lub DataReader)

ProviderName – dostawca danych np. System.Data.SqlClient

SqlDataSource wspiera także deklaratywne umieszczanie elementów w pamięci podręcznej cache. Właściwości: EnableCaching – włączenie/wyłączenie mechanizmu pamiętania w

pamięci podręcznej CacheDuration – czas przechowywania zawartości źródła danych w

pamięci

Page 51: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

51

XmlDataSource Deklaratywne wiązanie do danych XML Wspiera umieszczanie danych w pamięci podręcznej cache i

transformacje XSL Jednostronne wiązanie danychNazwa Opis

DataFile Ścieżka do pliku XML

TransformFile Ścieżka do pliku XSL

EnableCaching

XPath Wyrażenie XPath służące filtrowaniu danych

CacheDuration Czas przetrzymywania danych w pamięci podręcznej (sekundy)

CacheExpirationPolicy Typ CacheDuration

CacheKeyDependency Zależność Cache na określonym kluczu

Włączone/wyłączone korzystanie z pamięci podręcznej Cache

Page 52: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

52

ObjectDataSource Deklaratywne podpinanie do komponentów

Wiąże z danymi poprzez dedykowane klasy zaimplementowane w warstwie dostępu do danych (lub pobieranie danych z usługi Web)

Separacja kodu dostępu do danych od warstwy prezentacji Dwustronne podpinanie danych

SelectMethod, InsertMethod, UpdateMethod i DeleteMethod Możliwość umieszczania wyników zapytania w pamięci podręcznej Cache Parametryzowane operacje

Nazwa Opis

TypeName Typ komponentu (nazwa klasy)

SelectMethod Metoda komponentu wykonująca zapytanie typu select

InsertMethod

UpdateMethod

DeleteMethod

EnableCaching Włączenie/wyłączenie pamięci podręcznej Cache

Metoda komponentu wykonująca zapytanie typu insert

Metoda komponentu wykonująca zapytanie typu update

Metoda komponentu wykonująca zapytanie typu delete

Page 53: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

53

ObjectDataSource ObjectDataSource.SelectMethod może wskazywać na metody statyczne i

instancyjne Jeżeli metody instancyjne są używane:

ODS tworzy nową instancję klasy przy każdym wywołaniu Klasa musi posiadać domyślny publiczny konstruktor

Zdarzenia ObjectCreated and ObjectDisposing mogą zostać użyte do przeprowadzenia dodatkowej inicjalizacji lub sprzątania po obiekcie

Nazwa Opis

InsertParameters Parametry dla InsertMethod

UpdateParameters Parametry dla UpdateMethod

DeleteParameters Parametry dla DeleteMethod

SelectParameters Parametry dla SelectMethod

CacheDuration Czas przetrzymywania danych w pamięci podręcznej (sekundy)

SqlCacheDependency Zależność Cache na określonym elemencie bazy danych

Page 54: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

54

Zarządzanie stanem Zarządzanie stanem – zdolność do przechowywania i

przekazywania informacji np. pomiędzy żądaniami pojedynczego użytkownika.

Kryteria mechanizmów przechowywania i zarządzania stanem: zasięg, czas życia, dopuszczalny rozmiar przechowywanych danych oraz po jakiej stronie są przechowywane.

Zarządzać możemy na poziomie: Aplikacji (application state) - do przechowywania danych i stosowania w obrębie całej

aplikacji (dla każdego użytkownika tej aplikacji) np. dane konfiguracyjne, liczba sesji, ...

Sesji (session state) – do przechowywania danych i dostępu do danych w obrębie sesji (dla pojedynczego użytkownika) np. stan karty zakupów, email klienta, ...

Strony (page state) - do przechowywania informacji strony sieci WWW pomiędzy kolejnymi przetworzeniami strony np. zawartość pól tekstowychTextBoxes, stan CheckBoxes, ...

Page 55: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

55

Typy zarządzania stanem

Serwer KlientApplication state• Informacje dostępne dla

wszystkich użytkowników aplikacji

Cookies• Pliki tekstowe

przechowujące informacje o stanie

Session state• Informacje dostępne tylko z

kontekstu danej sesji

ViewState• Utrzymuje wartości

pomiedzy wieloma wołaniami do tej samej strony

Baza danych• Również może wspierać

zarządzanie stanem

Query strings• Informacje dołączane do

URL

Page 56: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

56

Obiekty zarządzania stanem Dane o stanie aplikacji są przechowywane w obiekcie klasy HttpApplicationState,

typu słownikowego zawierającego pary typu klucz-wartość. Zasoby – szybki dostęp (stan aplikacji jest przechowywany w pamięci); jednak

przechowywanie dużych bloków danych w stanie aplikacji może wypełnić pamięć serwera. Ulotność – stan aplikacji jest przechowywany w pamięci, jest usuwany z niej w momencie

zatrzymania lub restartu aplikacji lub w momencie awarii serwera. Skalowalność – stan aplikacji nie jest dzielony na serwery w farmie serwerów. Współbieżność – do stanu aplikacji może jednocześnie odwoływać się wiele wątków

(zapewnienie mechanizmów bezpiecznej aktualizacji przechowywanych obiektów). Dane o stanie sesji użytkownika są przechowywane w obiekcie klasy

HttpSessionState, typu słownikowego zawierającego pary typu klucz-wartość. Zawartość tego obiektu jest dostępna poprzez właściwości Session klasy Page i

HttpContext. Niepowtarzalny identyfikator sesji, służy do identyfikacji kolejnych żądań pochodzących

od tego samego klienta. Właściwość Session.Mode wskazuje gdzie przechowywane są dane o sesji: InProc,

StateServer lub SqlServer.

Page 57: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

57

Zapamiętywanie stanu kontrolki Wszystkie kontrolki dziedziczą właściwość ViewState po

klasie bazowej Conrol Dwa najczęściej spotykane problemy: Wysoki czas ładowania – strona musi serializować i

deserializować obiekt Zwiększony rozmiar strony – dane przechowywane w

ukrytym formularzu _VIEWSTATE

<%@ Page EnableViewState="False" %><asp:ListBox id="ListName" EnableViewState="true"

runat="server"></asp:ListBox>

<input type="hidden" name=„_VIEWSTATE" value="dDwtMTA4MzE0MjEwNTs7Pg==" />

Page 58: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

58

Dostęp do stanu serwera Dostęp do informacji:

PageStatezapis: ViewState["counter"] = counterVal;odczyt: int counterVal = (int) ViewState["counter"];

SessionStatezapis: Session["cart"] = shoppingCart;odczyt: DataTable shoppingCart = (DataTable) Session["cart"];

ApplicationStatezapis: Application["database"] = databaseName;odczyt: string databaseName = (string) Application["databaseName"];

Trwałość zmiennych Zmienne sesyjne utrzymują wartość przez czas trwania sesji (20 minut) Czas trwania sesji może być zmieniony w web.config: Zmienne aplikacyjne są usuwane po wywołaniu Application_End

Page 59: Platformy Technologiczne ASP.NET

59

Platformy Technologiczne 2012

Przechowywanie stanu sesji In - proc

Przechowywane w przestrzeni adresowej ASP.NET worker process

Szybkie działanie,

Dane są tracone gdy proces jest restartowany

Out – of – proc State Server

Usługa Windows ASP.NET State Service

Instalowana domyślnie, ale nie uruchomiona

Niezależne od IIS – proces aspnet_state.exe Konfiguracja IP i portu

stateConnectionString=„tcpip=127.0.0.1:42424”

SQL Server Dane sesyjne przechowywane w

SQL Server Wymaga stworzenia baz danych

InstallSqlState.sql / InstallPersistantSqlState.sql

Największa niezawodność – możliwość klastrowania

<sessionState mode="SQLServer" sqlConnectionString="data source=SQLServerName; Integrated security=true" />

Page 60: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

60

Cookies Tworzenie cookie:

Odczyt cookie:

Zapis cookie:

HttpCookie objCookie = new HttpCookie("myCookie");DateTime now = DateTime.Now;

objCookie.Values.Add("Time", now.ToString());objCookie.Values.Add("ForeColor", "White");objCookie.Values.Add("BackColor", "Blue");

objCookie.Expires = now.AddHours(1);

Response.Cookies.Add(objCookie);

HttpCookie objCookie = Request.Cookies["myCookie"];

lblTime.Text = objCookie.Values["Time"];lblTime.ForeColor = objCookie.Values["ForeColor"];lblTime.BackColor = objCookie.Values["BackColor"];

Page 61: Platformy Technologiczne ASP.NET

Platformy Technologiczne 2012

61

Sesje cookieless Każda aktywna sesja jest identyfikowana i śledzona poprzez

Session ID Session ID jest przesyłane między klientem a serwerem przez URL Cookieless sessions

Session ID zakodowane w URL

Nie można używać absolutnych URL

Ustawianie sesji Cookieless Session state jest konfigurowany w sekcji <SessionState> pliku Web.config cookieless = true

http://server/(h44a1e55c0breu552yrecobl)/page.aspx

<sessionState cookieless="true" />