Vous êtes sur la page 1sur 13

ASP.NET

Lionel Seinturier

Université des Sciences et Technologies de Lille

Lionel.Seinturier@lifl.fr

26/11/07

ASP.NET

1

Lionel Seinturier

Plan

1. Développement

2. Contrôles

2.1 Contrôles élémentaires

2.2 Présentation de données

2.3 Gestion des utilisateurs

2.4 Pagelet

3. Compléments sur l'API

ASP.NET

2

Lionel Seinturier

ASP.NET

Active Server Pages (ASP)

• du code Java embarqué dans une page HTML

• mêmes principes JSP, PHP

• les fichiers .aspx sont stockés sur le serveur (comme des docs)

ils sont désignés par une URL

• le chargement de l'URL provoque l'exécution de l'ASP côté serveur

http://www.lifl.fr/prog.aspx

Client
Client

IE

Firefox

1

4

2 Serveur prog.aspx 3 CLR .NET
2
Serveur
prog.aspx
3
CLR
.NET

ASP.NET

3

Lionel Seinturier

ASP.NET

ASP vs ASP.NET

• évolution des ASP pour prendre en compte .NET

• extension .asp (.aspx pour ASP.NET)

• ASP : VBScript ou JScript

• ASP: interprété/non typé

ASP.NET : VB, C#, … langages .NET

ASP.NET : compilé/typé

ASP.NET vs JSP

• modèle de programmation similaire

• ++ ASP.NET = composants graphiques (contrôles)

ASP.NET vs servlet

• pas d'équivalent de l'API servlet dans le monde ASP.NET

• en interne, les ASP.NET sont traduites en classes et compilées

ASP.NET

4

Lionel Seinturier

1. Développement

Illustration du fonctionnement

<%@ Page Language="c#" %> <HTML> <BODY> <H1>Table des factorielles</H1> <%

int i,fact; for ( i=1,fact=1 ; i<4 ; i++, fact*=i ) { Response.Write( i + "! =" + fact + "<BR>" );

}

%>

</BODY> </HTML>

invocation

exécution

côté serveur

</HTML> invocation exécution côté serveur 1. Développement Principe de fonctionnement <%@ Page
</HTML> invocation exécution côté serveur 1. Développement Principe de fonctionnement <%@ Page

1. Développement

Principe de fonctionnement <%@ Page Language="c#" %> <HTML> <BODY> <H1>Table
Principe de fonctionnement
<%@ Page Language="c#" %>
<HTML> <BODY>
<H1>Table des factorielles</H1>
<%
du code C#
int i,fact;
for ( i=1,fact=1 ; i<4 ; i++, fact*=i ) {
Response.Write( i + "! =" + fact + "<BR>" );
}
résultat = HTML
généré via l'objet
prédéfini Response
%>
</BODY> </HTML>

ce qui est renvoyé au client

</HTML> ce qui est renvoyé au client <HTML> <BODY> <H1>Table des

<HTML> <BODY> <H1>Table des factorielles</H1> 1! = 1<BR> 2! = 2<BR> 3! = 6<BR> </BODY> </HTML>

ASP.NET

5

Lionel Seinturier

ASP.NET

6

Lionel Seinturier

 

1.

Développement

1.

Développement

Principe de fonctionnement

 

Méthodes et variables d'instance

 

• plusieurs zones <%

%> possibles dans une même ASP.NET

 

Entre les balises <script runat="server"> et </script>

• exécutées dans leur ordre de définition

 

• une classe générée pour chaque ASP.NET • ne change pas tant que le fichier .aspx n'est pas modifié

• instanciée pour traiter une requête

 

<%@ Page Language="c#" %> <HTML> <BODY>

 

<H1>Compteur</H1>

<script runat="server">

 

static int compteur = 0;

• pas de persistence de l'instance (objet) entre 2 invocations

 

• besoin : conserver de l'information déclarer des attributs static

int GetCompteur() { return compteur++;

}

 

</script>

<H1> <% Response.Write(GetCpt()); %> </H1>

</BODY> </HTML>

ASP.NET

7

Lionel Seinturier

ASP.NET

8

Lionel Seinturier

1. Développement

Exemple

1ère invocation

2ème invocation

1. Développement Exemple 1ère invocation 2ème invocation 1. Développement Balise <script> Le code peut être
1. Développement Exemple 1ère invocation 2ème invocation 1. Développement Balise <script> Le code peut être

1. Développement

Balise <script>

Le code peut être défini dans un fichier externe

<%@ Page Language="c#" %> <HTML> <BODY>

<H1>Compteur</H1>

<script runat="server" src=" url" />

<H1> <% Response.Write(GetCpt()); %> </H1> </BODY> </HTML>

Directive Import

<%@ Import Namespace = "

">

using

ASP.NET

9

Lionel Seinturier

ASP.NET

10

Lionel Seinturier

 

1.

Développement

1.

Développement

 

Les objets implicites

 

Récupération des données d'un formulaire

 

Objets prédéclarés utilisables dans le code

 

Propriété Params de l'objet prédéfini Request

 

Request

la requête qui a provoqué le chargement la réponse à la requête de chargement

retourne le texte saisi ou null si le nom de paramètre n'existe pas

Response

Session

suivi de session pour un même client

 

Session.Add( string name, object value ) Session[string name]

string name, object value ) Session[string name] <HTML> <BODY> <FORM ACTION="http://

<HTML> <BODY> <FORM ACTION="http:// METHOD=POST> Nom <INPUT NAME="nom"> <P> Prénom <INPUT NAME="prenom"> <P> <INPUT TYPE=SUBMIT VALUE="Envoi"> <INPUT TYPE=RESET VALUE="Remise à zéro">

"

 

Application

espace de données partagé entre toutes les ASP.NET

idem Session

Cache

données gardées en cache par le serveur information sur le serveur, inclusion, délégation de pages générer des traces d'exécution

Server

Trace

</FORM>

 

</BODY> </HTML>

ASP.NET

11

Lionel Seinturier

ASP.NET

12

Lionel Seinturier

1. Développement

Récupération des données d'un formulaire

<%@ Page Language="c#" %> <HTML> <BODY> <H1>Exemple de résultat</H1> Bonjour <% Response.Write( Request.Params.Get("prenom") ); %> <% Response.Write( Request.Params.Get("nom") ); %> </BODY> </HTML>

clic
clic

1. Développement

Inclusion de pages

• aggrégation des résultats fournis par plusieurs page meilleure modularité meilleure réutilisation

Méthode Server.Execute

<%@ Page Language="c#" %> <HTML> <BODY> <H1>ASP.NET principale</H1> <% Server.Execute(" inc.aspx "); %> </BODY> </HTML>

inc.aspx "); %> </BODY> </HTML> URL ASP.NET 4 ASP.NET 1 ASP.NET 5 ASP.NET ASP.NET 2

URL

ASP.NET 4 ASP.NET 1 ASP.NET 5 ASP.NET ASP.NET 2 ASP.NET 3
ASP.NET 4
ASP.NET 1
ASP.NET 5
ASP.NET
ASP.NET 2
ASP.NET 3

Fichier inc.aspx

<%@ Page Language="c#" %>

<HTML> <BODY> <H1>ASP.NET incluse</H1> </BODY> </HTML>

ASP.NET

13

Lionel Seinturier

ASP.NET

14

Lionel Seinturier

 

1.

Développement

 

1.

Développement

Délégation de page

 

Gestion des erreurs

Une page peut déléger le traitement d'une requête à une autre prise en compte complète de la requête par la page déléguée

Erreur d'exécution du code

ex. : NullReferenceException, DivideByZeroException, …

 

Méthode Server.Transfer

 

dans tous les cas, erreur récupérée dans le navigateur client

Tout ce qui est après Transfer est ignoré

 
 

2 possibilités

<%@ Page Language="c#" %>

   
     

• conserver la page par défaut construite par le serveur Web

 

<HTML> <BODY> <H1>ASP.NET principale</H1>

• en concevoir une adaptée aux besoins particuliers de l'application

<% Server.Transfer(" transf.aspx "); %> </BODY> </HTML>

     
   

URL

   

ASP.NET

15

Lionel Seinturier

ASP.NET

16

Lionel Seinturier

1. Développement

Exemple de gestion d'erreur

<%@ Page Language="c#" %> <HTML> <BODY>

<H1>Pourvu

<% Random r = new Random(); double h = (double)r.Next(); int hasard = (int) (h/Int32.MaxValue*5); %> <H1> <% Response.Write(12/hasard); %> </H1> </BODY> </HTML>

!!</H1>

</BODY> </HTML> !!</H1> Si hasard = 0 page d'erreur par défaut ASP.NET 17

Si hasard = 0 page d'erreur par défaut

!!</H1> Si hasard = 0 page d'erreur par défaut ASP.NET 17 Lionel Seinturier 1. Développement Exemple

ASP.NET

17

Lionel Seinturier

1. Développement

Exemple de gestion d'erreur

<%@ Page Language="c#"

ErrorPage="err.aspx" %> <HTML> <BODY>

<H1>Pourvu

<% Random r = <H1> <%

</BODY> </HTML>

!!</H1>

%>

(12/hasard) %> </H1>

<%@ Page Language="c#" %>

<HTML> <BODY>

<h1>Le 0 est sorti !!</h1>

</BODY> </HTML>

Si hasard = 0 page d'erreur err.aspx

</HTML> Si hasard = 0 page d'erreur err.aspx ASP.NET 18 Lionel Seinturier 1. Développement Gestion des

ASP.NET

18

Lionel Seinturier

1. Développement

Gestion des traces

• debugger

• contrôler/inspecter le déroulement d'une appli web

à la main : Response.Write

: lourd, long à enlever pour passer en prod.

Objet prédéfini Trace

• Trace.Write(string message)

• Trace.Write(string categorie, string message)

• Trace.Write(string categorie, string message, Exception e)

• idem méthode Warn : les messages apparaissent en rouge dans les traces

System.Web.TraceContext

ASP.NET

19

Lionel Seinturier

1. Développement

Activation des traces

<%@ Page Trace="true" %>

Exemple factorielle À chaque itération :

Trace.Write( "i=" + i + " / fact=" + fact );

À chaque itération : Trace.Write( "i=" + i + " / fact=" + fact ); ASP.NET
À chaque itération : Trace.Write( "i=" + i + " / fact=" + fact ); ASP.NET

ASP.NET

20

Lionel Seinturier

Plan

1. Développement

2. Contrôles

2.1 Contrôles élémentaires

2.2 Présentation de données

2.3 Autres contrôles

2.4 Pagelet

3. Compléments sur l'API

ASP.NET

21

Lionel Seinturier

2. Contrôles

Philosophie ASP.NET

Séparer

• rendu graphique

• traitement

2 fichiers

• .aspx le code de présentation et celui des contrôles fichier XTHML (HTML 4.0 formulé en XML) Web form

• .aspx.cs , .aspx.vb , … fichier dit codebehind classe contenant les traitements

ASP.NET

22

Lionel Seinturier

2. Contrôles

Les contrôles

Composants graphiques pour l’écriture de pages ASP.NET

• pour agir avec l'utilisateur

• pour réagir aux actions de l'utilisateur

: lui présenter de l'information : déclencher des traitements

• utilisation en drag-and-drop dans VS pour la conception page web

• analogue atelier conception IHM en client lourd

• classe / objet

• propriétés

• événements: réactions (clic, frappe, changement, …)

: les caractéristiques d'affichage (ex. Text pour un TextBox)

• autant d'objets par page que de contrôles "déposés" sur la page

• interaction avec la page interaction avec les objets

• rendu HTML de la page à partir de l'état des objets

ASP.NET

23

Lionel Seinturier

2. Contrôles

Les contrôles existants par défaut

• toutes les balises HTML standards (<input> <img> <p> …)

• composants supplémentaires fournis par MS (redondants avec HTML mais + évolués)

affichage

: Label, Image, Panel, Tabel

bouton

: Button, Hyperlink, ImageButton, LinkButton

saisie

: TextBox, CheckBox, RadioButton, FileUpload, …

liste

: ListBox, DropDownList, …

validation

: CompareValidator, RequiredFieldValidator, RangeValidator, …

divers

: Calendar

données

: DataList, GridView, DetailsView

login

 

….

+ de nouveaux contrôles peuvent être programmés par l’utilisateur

ASP.NET

24

Lionel Seinturier

2.1 Contrôles élémentaires

Exemple

Contrôles TextBox et Button

élémentaires Exemple Contrôles TextBox et Button demo >> ASP.NET 25 Lionel Seinturier 2.1 Contrôles

demo >>

ASP.NET

25

Lionel Seinturier

2.1 Contrôles élémentaires

Exemple

Contrôles TextBox et Button

Fichier WebForm1.aspx

<%@ Page Language="c#" CodeFile="WebForm1.aspx.cs" Inherits="WebForm1" %> <html> <body> <form id="form1" runat="server"> <asp:TextBox ID="MyTextBox" runat="server" /> <asp:Button ID="MyButton" runat="server" OnClick="MyButton_Click" /> </form> </body>

Fichier WebForm1.aspx.cs

public partial class WebForm1 : System.Web.UI.Page {

public void MyButton_Click(object sender, System.EventArgs e) { MyTextBox.Text = "Hello world!";

}

}

ASP.NET

26

Lionel Seinturier

2.1 Contrôles élémentaires

Contrôle TextBox

Propriétés principales

• : identificateur unique (propriété présente pour tous les contrôles)

ID

• Text

: le texte affiché

• MaxLength

: taille max du texte

• : SingleLine | MultiLine | Password

TextMode

• : false | true

ReadOnly

• : le nombre de colonnes

Columns

• : le nombre de lignes (MultiLine)

Rows

• BackColor, BorderColor, ForeColor

: couleurs

• BorderStyle, BorderWidth, Font

: affichage

Événement principal

• TextChanged

: le texte change

(méthode de réaction OnTextChanged)

ASP.NET

27

Lionel Seinturier

2.1 Contrôles élémentaires

Association page - code

1ère solution : .aspx + codebehind + association (On…) déclarée dans .aspx

2ème solution : sans codebehind

• définir le code des méthodes de traitements des événements dans le fichier .aspx

entre des balises <script runat="server"> et </script>

1 seul fichier à gérer, moins modulaire

3ème solution : .aspx + codebehind + association (On…) déclarée dans codebehind

• ne pas utiliser l'attribut OnClick dans le fichier .aspx

• ajouter un gestionnaire d'événement sur le bouton dans le code C# en redéfinissant la méthode exécutée lors du chargement (OnInit)

couplage moins fort entre le fichier .aspx et le codebehind plus difficile à manipuler, moins intuitif

ASP.NET

28

Lionel Seinturier

2.2 Présentation de données

Contrôle GridView

• présentation d'information sous forme de tableau

• édition, suppression

pager automatique

• tri

Exemple d'utilisation

• édition des données d'une table SQL

associé à un contrôle DataSource

d'une table SQL associé à un contrôle DataSource ASP.NET 29 Lionel Seinturier 2.2 Présentation de données
d'une table SQL associé à un contrôle DataSource ASP.NET 29 Lionel Seinturier 2.2 Présentation de données

ASP.NET

29

Lionel Seinturier

2.2 Présentation de données

Contrôle DataSource

• “source” des données à afficher

• SqlDataSource

: un SGBD (SQL Server, …)

• AccessDataSource

: un fichier Access

• XmlDataSource

: un fichier XML

• ObjectDataSource

: des objets (C#, VB, …)

Définition d’une SqlDataSource

• une connection string (~ chemin d’accès aux données)

• 4 commandes SQL : SELECT, INSERT, DELETE, UPDATE

ASP.NET

30

Lionel Seinturier

2.2 Présentation de données

Exemples

Exemple de DataSource

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Driver={SQL Server};server=localhost;database=master" ProviderName="System.Data.Odbc" SelectCommand="SELECT * FROM [foo]" DeleteCommand="DELETE FROM [foo] WHERE [nom] = ?" InsertCommand="INSERT INTO [foo] ([nom], [age]) VALUES (?, ?)" UpdateCommand="UPDATE [foo] SET [age] = ? WHERE [nom] = ?"> </asp:SqlDataSource>

Exemple de GridView

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="nom" AutoGenerateColumns="True" AllowPaging="True" PageSize="4" AllowSorting="True" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true"> </asp:GridView>

demo >>

ASP.NET

31

Lionel Seinturier

2.2 Présentation de données

Contrôle GridView

Propriétés principales

• ID

• AllowPaging, AllowSorting

• AutoGenerateColumns

• AutoGenerateDeleteButton (idem Edit, Select)

• : les lignes affichées dans le GridView

Rows

• : l'indice de la ligne sélectionnée

SelectedIndex

ex. utilisation : GridView1.Rows[GridView1.SelectedIndex].Cells[0].Text

• EditIndex, PageIndex

Événements principaux

• RowUpdating : juste avant de mettre à voir une ligne

• RowUpdated : après avoir mis à jour une ligne

• idem SelectedIndexChanging/ed, Sorting/ed, RowDeleting/ed, PageIndexChanging/ed

ASP.NET

32

Lionel Seinturier

2.2 Présentation de données

Contrôle DetailsView

• présentation sous forme de fiches

• même action que GridView (édition, suppression)

• action supplémentaire : ajout

<asp:DetailsView ID="DetailsView1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="nom" AutoGenerateRows="true" AutoGenerateEditButton="True" AutoGenerateDeleteButton="True" AutoGenerateInsertButton="True" AllowPaging="True" > </asp:DetailsView>

2.2 Présentation de données

Exemple

2.2 Présentation de données Exemple demo >> ASP.NET 33 Lionel Seinturier

demo >>

ASP.NET

33

Lionel Seinturier

ASP.NET

34

Lionel Seinturier

 

2.3 Autres contrôles

2.3 Autres contrôles

 

Autre exemple de contrôle

 

Contrôle Login

Contrôle Login

Modification du fichier Web.Config

 

• gérer les comptes utilisateurs sur un site

 

<configuration xmlns="http://schemas.microsoft.com/.NETConfiguration/v2.0"> <appSettings/>

• créer des comptes

 
     

• les stocker dans une base de données

 

<connectionStrings> <remove name="LocalSqlServer"/> <add

La base de données dans laquelle vont être stockées les infos de login

• offrir un contenu différents selon que l’utilisateur est connecté ou non

   

Login

LoginStatus

: se connecter

: affichage du statut (connecté/non connecté)

name="LocalSqlServer" connectionString="Data Source= localhost;Initial Catalog=aspnetdb; Integrated Security=True"

providerName="System.Data.SqlClient"/>

lo calhost;Initial Catalog=aspnetdb; Integrated Security=True" providerName="System.Data.SqlClient"/>

CreateUserWizard

: création d’un nouvel utilisateur

</connectionStrings>

 

ChangePassword

: changer le mot de passe du compte

PasswordRecovery

: récupérer son mot de passe

<system.web> <authentication mode="Windows"/>

 
 

<authentication mode="Forms"/>

ASP.NET

35

Lionel Seinturier

ASP.NET

36

Lionel Seinturier

2.3 Autres contrôles

Contrôle Login

Modification du fichier Web.Config

Par défaut le contrôle Login impose des règles strictes de sécurité sur les mots de passe

• au moins 7 caractères

• au moins 1 caractère non alphanumérique

possibilité de réduire ces exigences

2.3 Autres contrôles

Contrôle Login

Modification du fichier Web.Config

<system.web> <authentication mode="Forms"/> <membership defaultProvider="MyMembershipProvider" > <providers> <add name="MyMembershipProvider" type="System.Web.Security.SqlMembershipProvider"

minRequiredNonalphanumericCharacters="0"

minRequiredPasswordLength="1"

passwordStrengthRegularExpression="" connectionStringName=" LocalSqlServer " /> </providers>

</membership>

" /> </providers> </membership> La réf. sur la chaîne de connexion </system.web>

La réf. sur la chaîne de connexion

</system.web>

</configuration>

ASP.NET

37

Lionel Seinturier

ASP.NET

38

Lionel Seinturier

 

2.3

Autres contrôles

2.4 Pagelet

Contrôle Login

 

Contrôles définis par l'utilisateur

 

Création de la base des utilisateurs

• factorisation de code HTML et de scripts

 

• fichier .ascx

programme aspnet_regsql.exe base SQL Server aspnetdb

\WINDOWS\Microsoft.NET\Framework\v2.0.xxx

<table><tr> <td><asp:textbox id="jour" runat="server" /></td><td>/</td>

 

alternativement fichier XML

<td><asp:textbox id="mois" runat="server" /></td><td>/</td> <td><asp:textbox id="annee" runat="server" /></td>

Rq: gestion des utilisateurs et des “membership provider” via le site web d’admin

<script language="c#" runat="server">

public string Jour { get { return jour.Text; } set { jour.Text=value; } }

// les propriétés de la pagelet

 

/* idem Mois, Annee */

</script>

</tr></table>

ASP.NET

39

Lionel Seinturier

ASP.NET

40

Lionel Seinturier

2.4 Pagelet

Utilisation de pagelet

<%@ Register

TagPrefix

le namespace XML choisi

TagName

le nom de la pagelet choisi

Src

l'URL pour accéder au fichier .ascx

<%@ Register TagPrefix="foo" TagName="bar" Src="Date.ascx" %> <%@ Page Language="c#" %> <html><body> <form runat="server"> <foo:bar id="JMA" runat="server" /> <asp:label id="Label" runat="server" /> <asp:button id="Button" text="Go!" runat="server" onclick="Click" /> </form>

<script runat="server"> void Click(object sender, System.EventArgs e) { Label.Text = JMA.Jour;

}

</script></body></html>

2.4 Pagelet

Utilisation de pagelet

2.4 Pagelet Utilisation de pagelet clic ASP.NET 41 Lionel Seinturier ASP.NET 42
clic
clic

ASP.NET

41

Lionel Seinturier

ASP.NET

42

Lionel Seinturier

2.4

Pagelet

2.4

Pagelet

Utilisation de pagelet

Autre façon de définir des contrôles utilisateur

 

• chaque pagelet est compilée en une classe nompagelet_ascx (ex : Date_ascx)

• étendre System.Web.UI.WebControls.WebControl

instanciée lorsqu'on les utilise

<foo:bar id="JMA" runat="server" />

• redéfinir CreateChildControls

 
 

Avantage

: le contrôle peut-etre défini à l'aide d'un DOM HTML

Alternativement

on ne se préoccupe pas d'écrire le code HTML

 

• peut être instanciée par programme

LoadControl("Date.ascx")

• ajoutée dynamiquement à une page

public class MyWebControl : WebControl { protected override void CreateChildControls() { Table tbl = new Table(); TableRow row = new tableRow(); TableCell cell = new TableCell(); TextBox box = new TextBox(); box.ID = "jour"; cell.Controls.Add(box); row.Cells.Add(cell); table.Rows.Add(row); Controls.Add(table);

<script runat="server"> void Page_Load() { Control dt = LoadControl("Date.ascx"); ((Date_ascx)dt).Jour = 12; Frm.Controls.Add(dt);

 

}

</script>

<form id="Frm" runat="server">

}

}

ASP.NET

43

Lionel Seinturier

ASP.NET

44

Lionel Seinturier

Plan

1. Développement

2. Contrôles

2.1 Contrôles élémentaires

2.2 Présentation de données

2.3 Pagelet

3. Compléments sur l'API

ASP.NET

45

Lionel Seinturier

3. Compléments sur l'API

Les objets prédéfinis ASP.NET

Request

la requête qui a provoqué le chargement

System.Web.HttpRequest

.Params

les paramètres de la requêtes

.RawUrl

l'URL complète

.FilePath

le chemin du fichier dans l'URL

/foobar/c2/WebForm1.aspx

.PhysicalPath

le chemin ϕ du fichier sur disque

c:\Inetput\wwwroot\foobar\c2\WebForm1.aspx

.PhysicalApplicationPath

la racine de l'application

c:\Inetput\wwwroot\foobar\

.Headers

les en-têtes de la requête HTTP

.UserHostName

l'@ du client

.UserHostAddress

l'IP du client

.UserLanguages

les préférences du client en terme de langues

.Cookies

lecture d'un cookie

ASP.NET

46

Lionel Seinturier

3. Compléments sur l'API

Les objets prédéfinis ASP.NET

Response

la réponse à une requête

System.Web.HttpResponse

.ContentType

le type MIME du contenu retourné au client (text/html, image/gif, …)

.Cache

gestion de la politique de cache de la réponse (date expiration)

.SetCookie

positionnement d'un cookie chez le client

ASP.NET

47

Lionel Seinturier

3. Compléments sur l'API

Les objets prédéfinis ASP.NET

Session

gestion d'une session client

System.Web.SessionState.HttpSessionState

Fonctionne comme une table de hachage indicée

• Session["key"] = object

• object res = Session["key"]

• object res = Session[int]

• Session.Count

• Session.GetEnumerator()

• Session.Remove("key")

• Session.RemoveAt(int)

• Session.RemoveAll()

// null si la clé n'existe pas

le i-ème élément de la session

le # d'éléments dans la session

un itérateur sur toutes les éléments de la session

• Session créée lors de la 1ère visite d'un client (Session.IsNewSession vaut true)

• Session.Timeout

délai d'inactivité (en minutes) au delà duquel la session expire

ASP.NET

48

Lionel Seinturier

3. Compléments sur l'API

Les objets prédéfinis ASP.NET

Application

espace de données partagé par tous les clients

System.Web.HttpApplicationState

Fonctionne comme une table de hachage indicée

• Application["key"] = object

• object res = Application["key"]

• object res = Application[int]

• Application.Count

• Application.GetEnumerator()

• Application.Remove("key")

• Application.RemoveAt(int)

• Application.RemoveAll()

// null si la clé n'existe pas

le i-ème élément de la session

le # d'éléments dans la session

un itérateur sur toutes les éléments de la session

ASP.NET

49

Lionel Seinturier

3. Compléments sur l'API

Les objets prédéfinis ASP.NET

Cache

espace de données partagé par tous les clients par rapport Application : peut avoir une durée de vie limitée

System.Web.Caching.Cache

Server

informations sur le server

System.Web.HttpServerUtility

ASP.NET

50

Lionel Seinturier