Cours
1.1 – Navigateur et Serveur Web
1.1.1 – Le navigateur
Un navigateur est une application installée sur le poste d’un internaute et qui permet d’accéder aux ressources d’un serveur Web.
Il reçoit les données transmises par le serveur Web (sous forme de code HTML, CSS, javascript…) puis il exécute ces codes afin d’afficher la page correspondante.
Il existe plusieurs navigateurs différents (IE, Firefox, Safari, …) et chacun d’eux interprète le code transmis par le serveur Web à sa manière. Il est donc fréquent d’avoir un rendu différent suivant le navigateur utilisé et la qualité du code transmis.
1.1.2 – Le serveur Web
Le serveur Web héberge les ressources standard nécessaires au site Web (HTML, CSS, images, sons, …) ainsi que les pages de code dynamique (page ASPX en C# ou VB par exemple).
Le serveur Web reçoit les requêtes transmises par le navigateur client, exécute les pages ASPX (dans le cas d’un site en ASP.NET), et renvoie le résultat au navigateur sous forme de code HTML, CSS, javascript…
1.1.3 – Requête
Exemple des étapes successives pour l’affichage d’un formulaire qui contient des champs à remplir et un bouton pour envoyer ces valeurs au serveur web.
1.2 – Le principe d’ASP.NET
1.2.1 – Le principe d’une page statique
Le but d’un serveur Web est de répondre à la demande d’un navigateur en lui envoyant une page demandée au format HTML.
Dans le cas ci-dessus, le serveur reçoit une demande concernant une page d’extension .html
Il transmet cette demande au gestionnaire en charge de traiter ce type d’extension. Ce dernier lit le contenu du fichier mapage.html et le renvoie au navigateur.
Le code HTML contenu dans mapage.html suffit à afficher le résultat souhaité. Il s’agit d’une page statique.
1.2.2 – Le principe général d’une page dynamique
Si l’on souhaite maintenant faire afficher l’heure actuelle dans le navigateur client, le serveur va devoir créer le code HTML dynamiquement à chaque demande du navigateur. L’heure ne peut pas être écrite une fois pour toutes dans un fichier !
1.2.3 – Le principe d’une page dynamique en ASP.NET
Dans une application ASP.NET, les pages portent l’extension .aspx
Une page ASP.NET est représentée sous la forme d’une classe partielle.
Dans une application Web, elle est par défaut composée de 2 fichiers distincts :
-
Un fichier d’extension .aspx
Ce fichier constitue la partie Design de la page. Il contient le code HTML et les éventuels scripts qui pourront être exécutés coté client.
Dans notre exemple, il pourrait ressembler à ceci :
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PageHeure.aspx.cs" Inherits="test.PageHeure" %>
<html>
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
Bonjour!<br />
Il est <asp:Label ID="LbHeure" runat="server"></asp:Label>
</form>
</body>
</html>
-
Un fichier Code Behind d’extension .aspx.vb (ou .aspx.cs pour un site développé en C#)
Ce fichier contient le code qui est exécuté sur le serveur. Ce code sera compilé en code IL lors de son premier appel. Le code IL est enfin exécuté par le CLR et le résultat est renvoyé au navigateur client.
Dans notre exemple, il pourrait ressembler à ceci :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace test
{
public partial class PageHeure : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
FillTime();
}
void FillTime()
{
LbHeure.Text = DateTime.Now.ToString("t");
}
}
}
Il est possible de grouper ces 2 fichiers en un seul (dans le fichier .aspx). Toutefois, l’avantage de garder ces 2 fichiers distincts est de permettre à un designer de travailler sur la partie graphique de la page et à un développeur de travailler sur la partie codage.
Avec ILDASM, on peut observer le code IL obtenu pour cette page.
Par exemple, code IL généré pour la fonction FillTime() :
.method private hidebysig instance void FillTime() cil managed
{
// Code size 32 (0x20)
.maxstack 3
.locals init ([0] valuetype [mscorlib]System.DateTime CS$0$0000)
IL_0000: nop
IL_0001: ldarg.0
IL_0002: ldfld class [System.Web]System.Web.UI.WebControls.Label testDivs.PageHeure::LbHeure
IL_0007: call valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_Now()
IL_000c: stloc.0
IL_000d: ldloca.s CS$0$0000
IL_000f: ldstr "t"
IL_0014: call instance string [mscorlib]System.DateTime::ToString(string)
IL_0019: callvirt instance void [System.Web]System.Web.UI.WebControls.Label::set_Text(string)
IL_001e: nop
IL_001f: ret
} // end of method PageHeure::FillTime
Ainsi, de la même façon que nous l’avons vu dans les cours sur le module .NET, il nous est possible de contrôler le code IL généré à partir de notre code source. Cela peut être intéressant dans certains cas d’optimisation.
1.3 – Création d’un site Web avec Visual Studio 2010
Visual Studio propose plusieurs modèles de projets permettant de créer un site Web.
Pour chacun d’entre eux, il est possible d’utiliser le serveur Web local (IIS) ou le serveur Web intégré dans Visual studio.
1.3.1 – Internet Information Services
IIS représente le centre de contrôle du serveur Web sur lequel il est installé.
Sous Windows Web Server 2008 R2 (et sous Windows 7), nous disposons de IIS 7.5.
Afin de pouvoir utiliser notre poste en tant que serveur Web local, nous devons nous assurer de sa présence.
Si ce n’est pas déjà fait, IIS s’installe depuis le panneau de configuration de Windows,
Ajout/suppression de programmes,
Activer des fonctionnalités Windows ,
Services Internet (IIS),
Outils d’administration Web et Services World Wide Web.
Lorsque ces fonctionnalités seront installées, nous pourrons créer un raccourci vers IIS sur notre bureau en recherchant %windir%\system32\inetsrv\InetMgr.exe
1.3.2 – Les 2 types de projet pour le Web
Visual studio propose 2 types de projets pour créer un site Web.
Chacun d’eux possède ses avantages et ses inconvénients.
La rubrique suivante de MSDN vous aidera à faire votre choix en fonction de vos besoins :
http://msdn.microsoft.com/fr-fr/library/dd547590.aspx
1.3.2.1 - Projet Site Web
Dans ce type de projet, il n’existe pas de fichier projet. Tous les fichiers contenus dans le projet sont inclus dans le site.
Le code source est généralement compilé par ASP.NET lors de la première demande qui suit l’installation ou la mise à jour.
Par défaut, aucun espace de nom n’est ajouté aux classes.
On déploie le site soit par copie des fichiers sources, soit par copie des assemblys précompilés.
1.3.2.2 - Projet Application Web
Ce type de projet gère les fichiers projets. Il permet de gérer facilement les dépendances inter-projets.
Le code est compilé sur le serveur de développement.
Par défaut, des espaces de noms sont ajoutés aux classes.
On déploie le site par copie de l’assembly précompilée
Ce type de projet permet une plus grande intégration d’outils de déploiement dans IIS.
ASP.NET a été pensé pour implémenter facilement la séparation des couches.
Dans l’industrie, que ce soit pour des applications WinForms ou des applications Web, on utilise fréquemment l’architecture 3-tiers qui consiste à scinder les applications de la manière suivante :
-
Une couche accès aux données
-
Une couche métier qui définit les classes propres à l’entreprise
-
Une couche présentation (ou interface graphique)
Dans le cadre de nos cours sur ASP.NET, nous serons amenés à créer des applications contenant plusieurs projets représentant ces couches.
Nous utiliserons donc le type de projet Application Web qui me parait plus adapté à ce type de configuration.
1.3.3 – Création du projet
Pour créer notre premier un site, nous allons choisir un projet de type Application Web ASP.NET vide que nous nommerons WebSite1.
Pour cela, ouvrir le menu Fichier, puis Nouveau, puis Projet …
On choisit ensuite le langage à utiliser Visual Basic ou Visual C#, puis dans les modèles proposés, on choisit Application Web ASP.NET vide.
On choisit ensuite le nom de notre application Web : WebSite1
Par défaut, la solution porte le même nom mais on peut choisir un nom de solution différent.
On choisit ensuite l’emplacement dans lequel sera placé le répertoire de notre solution WebSite1 :
Dans notre exemple, D:\Sites Web\tmp\
Visual studio crée par défaut le fichier projet et le fichier web.config que l’on voit dans l’explorateur de solutions :
Le fichier web.config, au format XML, est utilisé pour gérer la configuration du site web.
Nous l’étudierons par la suite.
1.3.4 – Choix du type de serveur Web
Le choix du serveur Web se fait en affichant les propriétés du projet (double-clic sur le fichier My Project dans l’explorateur de solutions), puis en ouvrant l’onglet Web.
1.3.4.1 – Serveur Visual Studio Development
Par défaut, VS2010 sélectionne le serveur Web intégré (VSD)
Ce serveur est à utiliser si vous ne souhaitez pas installer IIS ou IIS Express sur votre poste.
Il réagit assez fidèlement au comportement d’IIS mais peut cacher certaines erreurs pouvant apparaitre sur un IIS de production.
1.3.4.2 – Serveur Web IIS local
Dans cas VS utilise le serveur IIS installé sur le poste de développement : IIS complet ou IIS Express (à noter que l’installation d’IIS Express nécessite Visual Studio 2010 Service Pack 1).
Par défaut, VS vous propose un nom d’URL basée sur le nom de votre projet. Vous pouvez modifiez ce nom si vous souhaitez accéder à votre application Web par une autre URL.
Cliquez ensuite sur Créer un répertoire virtuel. Comme son nom l’indique, cela va créer un répertoire virtuel sur votre serveur Web local.
Dans notre exemple, nous utiliserons le serveur Web IIS local.
1.3.4.3 – Serveur Web personnalisé
Dans cas VS utilise le serveur IIS dont vous donnez le nom ou l’adresse IP.
Le répertoire virtuel WebSite1 aura dû être créé sur ce serveur auparavant.
1.3.5 – Création de la première page Web
Jusqu’à présent, nous avons créé la structure de notre site Web, mais il est vide et on ne peut donc pas naviguer sur son contenu.
En effet, en tapant http://localhost/website1, nous obtenons une erreur (http 403.14) qui signifie que nous n’avons aucune page par défaut à afficher.
Nous allons donc ajouter la première page.
Pour ajouter un nouvel élément nous avons deux solutions :
-
Dans le menu Site Web, cliquer sur Ajouter un nouvel élément
Ou
-
Dans l’explorateur de solutions, clic droit sur D:\tmp\WebSite1\, puis Ajouter un nouvel élément. A noter que l’on peut créer des dossiers sous la racine du site et ajouter un nouvel élément en faisant un clic droit sur n’importe quel dossier du projet.
Nous n’avons plus qu’à choisir le type d’élément que nous souhaitons ajouter, dans notre cas nous allons ajouter un Web Form que nous nommerons Home.aspx.
Il ne reste plus qu’à cliquer sur Ajouter.
Dans l’explorateur de solutions, nous pouvons controler la présence de notre nouvelle page :
En double-cliquant sur Home.aspx, nous accédons à la partie Design de cette page que Visual Studio a pré-rempli à partir du modèle d’élément Web Form :
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Home.aspx.vb" Inherits="WebSite1.Home" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
Pour accéder à la partie Code behind de cette page, on fait un clic droit sur son nom (dans l’explorateur de solutions) et on choisit Afficher le code.
Cela nous donne le contenu de Home.aspx.vb
Public Class Home
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
End Class
Coté design, on peut observer que VS2010 a préparé quelques lignes de code de base.
La 1ere ligne est une directive de page (<% @ Page)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Page1.aspx.cs" Inherits="Page1" %>
Elle nous indique les éléments suivants :
Language="C#" -> il s’agit du langage utilisé dans la partie Code Behind (on pourrait avoir VB)
AutoEventWireUp="true" -> signifie que les événements déclenchés par les controles seront automatiquement pris en compte.
CodeFile= "Page1.aspx.cs" -> indique l’emplacement du fichier Code Behind correspondant
Inherits="Page1" -> indique que cette page est liée à la classe Page1 définie coté serveur
La ligne suivante concerne le DOCTYPE. Elle est bien sur modifiable afin de choisir une autre version du HTML.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Les lignes qui suivent constituent les blocs standards HTML de description d’une page.
Nous allons ajouter notre texte Bonjour, ceci est mon premier site en ASP.NET !
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Page1.aspx.cs" Inherits="Page1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
Bonjour, ceci est mon premier site en ASP.NET !
</div>
</form>
</body>
</html>
Nous pouvons maintenant naviguer sur notre site en cliquant sur le menu Déboguer, Démarrer le débogage ou plus simplement avec la touche F5 du clavier.
Au premier lancement, il est possible que nous obtenions le message suivant. Valider pour modifier le fichier Web.config que nous étudierons par la suite.
Le résultat dans notre navigateur :
1.4 –Configuration de l’application web
1.4.1 – Le fichier web.config
C’est le premier élément qui est ajouté dans un nouveau projet web.
Il doit être placé à la racine du site.
Ce fichier, au format XML, est utilisé pour gérer la configuration du site web.
Il interagit pour la plupart des paramètres de façon bidirectionnelle avec IIS.
C’est-à-dire qu’une modification effectuée depuis IIS, selon son type, viendra s’inscrire dans le fichier web.config du site concerné, et une modification apportée dans ce fichier apparaitra dans la rubrique correspondante d’IIS.
Il peut définir entre autres:
-
Les gestionnaires de sections de configuration,
-
Les paramètres d’application,
-
Les gestionnaires et modules http,
-
Les assemblys contenant des contrôles (tels que <asp :…>),
-
Les assemblys référencés,
-
Les namespaces, …
Par défaut, l’application Web hérite des paramètres indiqués dans les fichiers Machine.config et web.config
Ces 2 fichiers sont placés dans %SystemRoot%\Microsoft.NET\Framework\<version>\CONFIG et ils s’appliquent à tous les sites hébergés sur la machine pour la version du framework indiqué.
Le fichier web.config présent dans notre site web permet de modifier ou d’ajouter des paramètres spécifiques à notre application.
A chaque modification du fichier web.config, le site est recompilé afin de prendre en compte le contenu de ce fichier.
1.4.2 - Les paramètres d’application
Les paramètres d’application sont des variables de portée application.
Elles sont généralement utilisées pour regrouper dans le fichier de configuration tous les valeurs globales utilisées dans le code de nos pages (URLs, API Key, nom de serveur mail, …)
Un paramètre d’application est représenté par une paire Key / Value.
Key contient le nom du paramètre, et value contient la valeur du paramètre (type String).
Pour créer des paramètres d’application, on peut soit les placer directement dans le fichier web.config, soit les placer dans un fichier XML indépendant (exemple : user.config) que l’on crée généralement à la racine du site.
Dans le fichier web.config, on indique le nom de ce fichier dans l’attribut file de la section <appSettings> :
Web.config:
<configuration>
<appSettings file="user.config">
<add key="monParam1" value="maValeur1" />
</appSettings>
</configuration>
Dans le fichier user.config, on crée une section appSettings avec nos valeurs personnalisées :
User.config
<appSettings>
<add key="autreParam1" value="autreValeur1" />
</appSettings>
Les paramètres d’application peuvent ensuite être lus depuis le code behind :
Imports System.Configuration
Public Class Home
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim s1 As String = ConfigurationManager.AppSettings("monParam1")
Response.Write("monParam1=" & s1 & "<br/>")
Dim s2 As String = ConfigurationManager.AppSettings("autreParam1")
Response.Write("autreParam1=" & s2 & "<br/>")
End Sub
End Class
Lançons maintenant notre application WebSite1 avec F5 :
1.4.3 – L’éditeur de configuration
La configuration d’un site Web peut s’effectuer de 3 façons différentes :
-
Modification du fichier web.config
-
Editeur de configuration de IIS
-
Outil d’administration de site web de Visual Studio
Comme il n’est pas facile de mémoriser tous les paramètres de ce fichier, Visual Studio propose un utilitaire graphique permettant de gérer les principaux réglages de base (Menu projet, Configuration ASP.NET).
Afin de pouvoir utiliser cet éditeur de configuration, il sera peut-être nécessaire de faire un réglage dans IIS.
Se positionner sur le site (exemple : Default Web Site , WebSite1), puis rubrique Gestion, puis Editeur de configuration
Puis indiquer user.config comme valeur du champ file :
L’outil d’administration s’ouvre alors dans un navigateur :
1.5 – Internet Information Services
IIS représente le centre de contrôle de tous les sites web hébergés sur la machine.
1.5.1 - Les Pools d’applications
Un pool d’application permet de définir le contexte d’exécution d’une ou plusieurs applications Web.
Chaque pool d’application définit la version du Framework à utiliser et le mode pipeline utilisé.
Une application peut utiliser un pool d’application partagé avec d’autres applications ou utiliser son propre pool.
Création ou modification d’un pool d’application :
On indique la version du Framework utilisée (le choix se fait parmi les versions installées sur le poste)
On indique le mode de pipeline :
Classique : C’est le mode de fonctionnement d’IIS 6.0.
Dans ce cas, IIS utilise des pipelines distincts de traitement des demandes IIS et ASP.NET pour traiter les demandes.
L'un est destiné aux filtres ISAPI de code natif (et aux composants d'extension), et l'autre aux composants d'application de code managé, tels qu'ASP.NET.
Le mode classique maintient la compatibilité descendante avec les versions antérieures d'IIS.
Intégré : IIS utilise un pipeline intégré unifié de traitement des demandes IIS et ASP.NET pour traiter les demandes.
Le pipeline intégré offre de meilleures performances.
On ne peut l’utiliser qu’à partir de la version 2.0 du Framework .NET
-
ISAPI : Internet Server Application Programming Interface
Un peu comme pour CGI, ISAPI prend en charge la création d’une réponse au format HTML lors de demandes nécessitant l’exécution d’une application ou d’un module sur le serveur.
Les versions antérieures à ISAPI 6 sont exécutées dans le même espace de travail qu’IIS. Ceci évite l'appel à de nombreuses fonctions interprocessus et améliore donc les performances. En revanche, la défaillance d’une application ISAPI entraine le plantage du serveur IIS.
Depuis IS 6.0, une application ISAPI peut s'exécuter dans un emplacement différent de celui d’IIS
1.5.2 – Sites
Définit l’arborescence des sites hébergés par IIS.
Default Site Web
Default Web Site représente le site par défaut accessible lorsque l’on accède au serveur Web et qu’aucun autre site n’est défini.
Dans le site par défaut, on trouve aussi toutes les applications que l’on souhaite exécuter en tant que site Web local.
Cela est utile pour tester des applications Web avant de les placer sur un serveur de production.
L’application WebSite1 que nous avons créé précédemment a été placée sous le site par défaut automatiquement par Visual Studio.
Autres sites
Au même niveau que le site par défaut, on trouve les sites accessibles de l’extérieur par l’intermédiaire d’un nom de domaine. Ce nom de domaine aura dû être préalablement enregistré pour être mappé vers l’adresse IP du serveur.
Cette configuration se fait par un clic droit sur le nom du site, puis Modifier les liaisons :
Paramètres de base
Ce réglage est accessible en sélectionnant le site concerné dans la liste des sites, puis en cliquant sur Paramètres de base de la fenêtre Actions de IIS :
Ils permettent de modifier le répertoire physique de l’application web, ainsi que son pool d’application et son type d’authentification
Parcourir*.80 (http)
Vous permet de naviguer sur le site sélectionné dans le navigateur par défaut.
Cette option est très utile pendant une phase de paramétrage du site depuis IIS, car vous pouvez effectuer vos réglages et visualiser le résultat directement depuis IIS.
Exporter / Importer une application
Cette fonctionnalité permet de créer un package sous forme de fichier .zip, contenant toute l’arborescence physique de l’application Web.
Ce fichier peut ensuite être copié sur un autre serveur IIS. En utilisant la fonctionnalité Importer une application, le site web correspondant au contenu du package est alors créé sur ce nouveau serveur.
1.5.3 – IIS - Rubrique ASP.NET
Les rubriques d’IIS seront vues en détail lors des cours correspondant.
La liste ci-dessous ne donne qu’un aperçu des rubriques accessibles depuis IIS.
http://technet.microsoft.com/fr-fr/library/cc754705%28v=ws.10%29.aspx
Chaines de connexion
Ce module permet de créer les chaines de connexion afin de pouvoir accéder aux bases de données utilisées par l’application Web.
Ex : Server=localhost;Database=base1;User ID=user1;Password=pwd1
Clé d’ordinateur
Facultatif. Utilisé généralement pour sécuriser l’application
Permet de configurer les clés de chiffrement et de déchiffrement utilisées pour protéger les données d'authentification par formulaire et les données de l'état d'affichage au niveau de la page.
On peut utiliser une des 4 méthodes proposées :
SHA1 par défaut : le plus utilisé de nos jours, AES, MD5 ou TripleDES
Les clés de chiffrement personnalisées sont placées dans le fichier web.config dans l’élément machineKey.
<machineKey validationKey="AC8C23C7078A0B58FE…" decryptionKey="D010EB92A56E1D…" validation="SHA1" decryption="AES" />
Compilation
Différents paramètres utilisés pour la compilation de l’application. On retrouve ces paramètres dans les propriétés du projet sous Visual Studio.
Nombre de recompilations
nombre de recompilations dynamiques de ressources avant le redémarrage de l'application
Pragmas de ligne d'URL [urlLinePragmas]
Option Explicit
True : oblige à déclarer les variables (Dim en VB) avant de pouvoir les utiliser)
Option Strict
True : refuse les conversions implicites qui pourraient entraîner des pertes de données
Traitement par lots
Utilisés pour les projets de type Site Web. Lors du premier appel d’une page ASP.NET non compilée, permet de compiler toutes les pages du répertoire en segments pour améliorer les performances disque et mémoire.
Courrier électronique
Adresse mail d’envoi et serveur utilisé pour l’envoi de mails depuis l’application Web.
Windows : Utilise l'identité de l'application afin de s’identifier auprés d’un éventuel un serveur de relaying.
Etat de session
Spécifie de quelle façon est géré l’état de session ainsi que les cookies.
Globalisation
Permet de gérer les paramètres liés à la globalisation .NET pour une application qui utilise des fichiers de ressources spécifiques à chaque culture.
Niveaux de confiance .NET
Permet d’indiquer le niveau de confiance que vous souhaitez donner à l’application web.
En fonction de ce niveau de confiance, l’application se verra refuser l’autorisation d’effectuer certaines actions.
Total (aussi appelé Full trust)
L’application a accès à toutes les ressources qui dépendent de la sécurité de l’OS.
Elevé (HighTrust)
Interdiction des opérations suivantes :
-
Appeler du code non managé ou des composants de type service
-
Ecriture dans le journal des événements
-
Accéder aux sources de données ODBC, OleDb ou Oracle.
Moyen (MediumTrust)
Niveau élevé + Interdiction des opérations suivantes :
-
Accès aux fichiers hors du répertoire de l’application Web
-
Accès au registre
-
Appels réseau ou service Web
Faible (LowTrust)
Niveau moyen + Interdiction des opérations suivantes :
-
Ecriture dans le système de fichiers
-
Appel de la méthode Assert (méthode de tests unitaires sur code ou objets)
Minimal (MinimalTrust)
L’application ne dispose que des autorisations d’exécution de base.
Pages d’erreurs ASP.NET
Permet de spécifier des pages d’erreurs personnalisées en réponses à certains codes d’erreurs http
Crée par exemple l’entrée suivante dans le web.config :
<customErrors>
<error redirect="http://serveur.com/maPage404.aspx" statusCode="404" />
</customErrors>
Pages et contrôles
Définit les paramètres par défaut des pages et contrôles ASP.NET de l’application Web.
La plupart des paramètres sont définis depuis VS.
Activer l'état de session
Permet d’enregistrer et de récupérer des valeurs spécifiques à chaque utilisateur connecté.
Géré par l’Etat de session vu plus haut.
Valider la demande
Indique si ASP.NET doit rechercher des valeurs dangereuses dans la demande envoyée par le navigateur (attaques de script)
Paramètres d’application
Permet de créer/modifier les paramètres d’application
Profil .NET
Permet de gérer des propriétés qui contiendront des valeurs spécifiques à chaque utilisateur visitant le site sans être obligé de gérer une base de données spécifiques.
Par exemple, on peut créer une propriété MarqueAuto qui va mémoriser la marque de la voiture de l’internaute, suite au remplissage d’un formulaire.
Ces valeurs sont écrites et lues avec les lignes de code suivantes :
Profile.MarqueAuto = TextBoxMarqueAuto.Text
Dim s as String = Profile.MarqueAuto
La valeur contenue dans Profile.MarqueAuto sera automatiquement renvoyée par rapport à l’utilisateur connecté, sans savoir qui il est.
Cette information peut ensuite être utilisée afin de personnaliser une ou des pages en fonction de sa valeur.
http://msdn.microsoft.com/fr-fr/library/2y3fs9xs%28v=vs.100%29.aspx
Règles d’autorisation .NET
Permet d’accorder ou de refuser l’accès du site Web à un utilisateur ou un groupe d’utilisateur particulier et pour un verbe spécifié (GET ou POST).
Par exemple, cela crée la ligne suivante dans le web.config :
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
1.5.4 – IIS - Rubrique Gestion
Editeur de configuration
Permet de modifier toutes les sections de la configuration du site web.
Cet éditeur est très pratique car il permet de visualiser toutes les sections et leur contenu possible.
Pour chaque contenu, l’éditeur s’adapte au nombre de paramètres nécessaires et affiche chacun d’eux le nom des propriétés requises.
1.5.5 – IIS - Rubrique IIS
ASP
Permet d’effectuer les paramètres relatifs à la configuration ASP.
Authentification
Permet de définir les différentes méthodes d’authentification permettant d’accéder à l’application.
CGI
Permet de configurer les applications CGI
Compression
Permet d’activer ou désactiver la compression des pages dynamiques et statiques.
Document par défaut
Permet de spécifier le document par défaut (utilisé lorsque la demande ne contient pas le nom de la page cible).
En-têtes de réponses http
Permet d’ajouter des paires nom/valeur dans la liste des entêtes http qui seront transmis au navigateur client dans l’entête http de la réponse.
Exploration de répertoire
Attributs à afficher pour l’exploration de répertoire
Filtrage des demandes
Permet de configurer le filtrage (autorisation ou refus) des demandes au niveau des extensions de fichier, des segments, des URLs, des tailles d’entêtes, …
Journalisation
Permet d’effectuer le paramétrage de la journalisation des demandes envoyées au serveur Web.
Mappage de gestionnaires
Permet de gérer le mappage des gestionnaires à utiliser en fonction des ressources ou des extensions des demandées.
Un gestionnaire, (similaire à l'extension ISAPI dans les versions précédentes d’IIS), est responsable du traitement d’une demande et de la production de sa réponse pour des types de contenu spécifiques.
Pour cela, on mappe un gestionnaire à une extension particulière.
Exemple avec les PageHandlerFactory… qui gère les pages .aspx
Pour infos : Le gestionnaire est une classe. NET qui implémente l'interface de System.Web.IHttpHandler ASP.NET ou System.Web.IAsyncHttpHandler, et utilise les API dans l'espace de noms System.Web pour produire une réponse http
Un module, (similaire au filtre ISAPI dans IIS versions précédentes), participe au traitement de toutes les demandes basées sur certaines règles afin de modifier ou d’ajouter des fonctionnalités particulières à IIS.
Exemple avec les modules d'authentification, que l’on peut redéfinir, qui gèrent l'état d'authentification quelle que soit l’extension de la demande.
Pour infos : Le module est une classe. NET qui implémente l'interface System.Web.IHttpModule , et utilise les API dans l'espace de noms System.Web pour participer au traitement(s) d’une requête.
Mise en cache de sortie
Permet de régler le cache de sortie pour une extension particulière pour les 2 modes noyau et utilisateur.
Pour infos, à partir d’IIS 6.0, les requêtes http sont traitées par le pilote http.sys en mode noyau (géré par Windows),
tous les autres processus (pools d’applications, …) sont exécutés en mode utilisateur (ils peuvent être gérés par les utilisateurs, par exemple les pools d’application, gestion de la configuration, …).
http.sys assure les fonctionnalités suivantes :
-
Transmission des requêtes http à la file d’attente correspondante
-
Mise en cache des réponses
-
Enregistrement des fichiers journaux (pour le service web)
Chaque requête http est transmise à une file d’attente par http.sys, chaque pool d’application ayant sa propre file d’attente.
Modules
Permet de gérer les modules IIS.
(Voir définition des modules un peu plus haut).
Pages d’erreurs
Permet de spécifier des pages d’erreurs personnalisées en réponses à certains codes d’erreurs http
On ne peut pas personnaliser les messages d'erreur HTTP suivants : 400, 403.9, 411, 414, 500, 500.11, 500.14, 500.15, 501, 503 et 505.
Crée par exemple l’entrée suivante dans le web.config :
<httpErrors>
<error statusCode="404" subStatusCode="2" path="/ErrorPages/404.aspx" responseMode="ExecuteURL" />
</httpErrors>
La différence entre les pages d’erreurs .NET et page d’erreurs IIS est assez floue.
D’une manière générale, si on utilise le serveur Web intégré de Visual Studio , on utilisera de préférence les pages d’erreurs .NET (<customErrors>)
Si on utilise le serveur Web IIS 7, on utilisera de préférence les pages d’erreurs IIS (<httpErrors>).
Parametres SSL
Pour activer SSL dans IIS, on doit d'abord obtenir un certificat qui est utilisé pour chiffrer et déchiffrer les informations qui sont transférées sur le réseau.
Pour faire une demande de certificat, on peut utiliser directement IIS en sélectionnant la racine du serveur et en choisissant Certificats de serveur dans la rubrique IIS :
Redirection http
Soit l’arborescence de site suivante :
1 - URL : localhost/website1/home.aspx renvoie vers http://localhost/website1/redir/home.aspx
2 - URL : localhost/website1/home.aspx renvoie vers http://localhost/website1/redir/home.aspx/home.aspx
URL : localhost/website1 renvoie vers http://localhost/website1/redir/home.aspx/
Cela crée l’entrée suivante dans web.config :
<system.webServer>
<httpRedirect enabled="true" destination="http://localhost/website1/redir/home.aspx" exactDestination="true" childOnly="false" />
</system.webServer>
Règles d’autorisation
Permet d’accorder ou de refuser l’accès du site Web à un utilisateur ou un groupe d’utilisateur particulier et pour un verbe spécifié (GET ou POST) pour IIS 7 (<system.webServer>)
Par exemple, cela crée l’entrée suivante dans web.config :
<system.webServer>
<security>
<authorization>
<add accessType="Allow" users="*" verbs="POST" />
</authorization>
</security>
</system.webServer>
Type MIME
Permet de gérer les types MIME qui identifient les types de contenus fournis par le serveur Web.
A l’origine, les types MIME ont été créés pour leur utilisation par les clients de messagerie.
Ils ont ensuite étaient étendus au protocole http afin d’être accessible depuis les navigateurs web.
Un type MIME est composé de 2 parties :
Une partie type de média : application, audio, video, text, image
Une 2eme partie donnant le sous-type : exemple jpeg ou gif pour le type image
La plupart des types MIME sont déjà présents dans la configuration IIS.