| auteur : Didier Danse |
Ce fichier permet de définir pour une application asp.NET ou pour un répertoire
particulier de celle-ci.
Il comprend divers paramètres comme le type de compilation, le type d'authentification,
la manière de garder la valeur des variables de sessions, ...
Il est également possible d'y placer des valeurs qui sont ainsi modifiables sans
recompilation de l'application.
Un Web.config bien configuré permet, tout comme le Global.asax, de simplifier la
mise en oeuvre de l'application ainsi que d'améliorer les performances.
|
| auteur : Didier Danse |
Il est possible de placer un fichier Web.Config par répertoire.
La portée du Web.Config est ainsi ce répertoire et tous ses sous-répertoires sauf
si un autre fichier Web.Config se trouve dans un de ses sous-répertoires. Dans
ce cas, le Web.Config correspondant sera pris en compte.
|
| auteur : cyrillus76 | Pour changer le timeout d'une application web, dans le fichier web.config :
< configuration >
< system . web >
< customErrors mode = " Off " / >
< compilation debug = " true " / >
< httpRuntime maxRequestLength = " 8096 " executionTimeout = " 600 " / >
< / system . web >
< / configuration >
|
Si vous voulez modifier le timeout d'une seule page, au début de la page aspx :
<%
Server . ScriptTimeout = 200
%>
|
|
| auteur : Didier Danse |
La réponse se trouve dans le Web.Config au sein du tag customErrors.
Ce tag a diverses propriétés dont, entre autres, le Mode. Celui-ci peut valoir
- On: les erreurs personnalisées sont activées. Si la valeur de la propriété
defaultRedirect n'est pas redéfinie, les utilisateurs reçoivent une erreur générique
- Off: les erreurs détaillées sont affichées
- RemoteOnly: spécifie que les erreurs personnalisées ne sont affichées qu'aux
utilisateurs distants. Les erreurs asp.NET sont affichées sur le localhost. Il
s'agit de la valeur par défaut.
|
| auteur : Didier Danse |
Ces deux fichiers sont les seuls qui ne sont pas compilés dans une application web.
On serait ainsi tentés de télécharger les fichiers pour essayer un quelconque piratage.
Alors est-ce possible? La réponse est non. Ils sont automatiquement configurés
pour éviter ce genre de choses.
|
lien : Utilisation du Global.asax
|
| auteur : Didier Danse |
Non. D'ailleurs dans VS.NET 2005 il n'y est pas d'office. Dans ce cas, le
fichier de config pris en compte est le machine.config.
|
| auteur : Didier Danse |
Par défaut, lorsque le navigateur est Internet Explorer, IIS envoie des tags formattés
différemment que lorsqu'il s'agit de Firefox ou tout autre navigateur. (les largeurs de
composants ne sont pas toujours envoyées à un client Firefox)
Pour éviter cela, il est possible de préciser dans le web.config d'envoyer des tags identiques
quelque soit le navigateur. Il faut donc ajouter un fils au noeud "system.web".
< browserCaps > TagWriter=System.Web.UI.HtmlTextWriter< / browserCaps >
|
|
| auteur : Didier Danse |
Tout d'abord pour être certain que la session est bien "réinitialisée", mettez un
point d'arrêt pour vérifier que l'on passe bien dans le session_start. Vous pouvez
également utiliser un Trace.Warning ou simplement un Console.Write afin de laisser un
affichage quelque part signalant qu'on est bel et bien passé par le session_start.
Si c'est le cas, il s'agit certainement d'un firewall (zonealarm par exemple) qui empêche
l'enregistrement des cookies nécessaires pour garder le sessionid.
Lors d'un retour serveur, le sessionid n'est pas passé et le serveur considère donc qu'il
s'agit d'une nouvelle session.
Pour corriger le problème, vous pouvez utiliser un autre moyen de stocker les sessions ou
affecter la valeur "true" à la propriété cookieless dans le web.config
< sessionState
mode = " InProc "
stateConnectionString = " tcpip=127.0.0.1:42424 "
sqlConnectionString = " data source=127.0.0.1;Trusted_Connection=yes "
cookieless = " true "
timeout = " 30 "
/ >
|
|
| auteur : Didier Danse |
Si l'on définit le mode d'authentification à Forms, il faut, par défaut, être authentifié
pour accéder à n'importe quelle page (excepté celle de login bien évidemment).
Pour permettre à un utilisateur non authentifié d'accéder à une page, il faut définir une
règle dans le web.config.
< location path = " test.aspx " >
< system . web >
< authorization >
< allow users = " ? " / >
< / authorization >
< / system . web >
< / location >
|
qui signifie que pour la page "test.aspx", on utilise tous les utilisateurs non authentifiés.
|
| auteur : David Pedehourcq | Dans le fichier web.config de votre application :
< configuration >
< system . web >
< customErrors defaultRedirect = " erreurinconnue.htm " mode = " RemoteOnly " >
< error statusCode = " 500 " redirect = " 500.htm " / >
< error statusCode = " 404 " redirect = " 404.htm " / >
< / customErrors >
< / system . web >
< / configuration >
|
|
| auteur : David Pedehourcq |
Dans une application on a toujours besoins de sauvegarder des variables globales qui pourront être réutilisées à tout moment
par l'application. Le stockage des variables globales dans le fichier web.config est la solution la plus simple . Prenons l'exemple du stockage d'une chaine de connection dans le fichier web.config.
dans le fichier web.config
< appSettings >
< add key = " ConnectionString "
value = " Provider = Microsoft . Jet . OLEDB . 4 . 0 ; Data Source = c : \ Inetpub \ wwwroot \ bornes \ charentes . mdb ; " / >
< / appSettings >
|
pour récupérer la chaine de connection :
Protected WithEvents connection As System. Data . OleDb . OleDbConnection
Private Sub Page_Load (ByVal sender As System. Object , ByVal e As System. EventArgs ) Handles MyBase. Load
connection = New System. Data . OleDb . OleDbConnection ()
connection. ConnectionString = configuration. AppSettings (" ConnectionString " )
End Sub
|
Note : Il existe d'autres moyens pour stocker des variables globales. Par exemple les sessions utilisateurs
pour jouer sur des variables qui dépendent des utilisateurs et leur paramètrer une durée de vie. Pour les chainnes de
connections, si vous avez un mot de passe et un ID dans la chainne, il est conseillé de stocker cette variable dans la base de registre pour des
raisons de sécurité (il est plus facile pour un hacker du lire un fichier sur le serveur, qu'une valeur dans la base de registre du serveur). Le
stockage de variables globales "sensibles" dans la base de registre n'est possible qu'avec le framework.NET 1.1
|
lien : Quelles nouveautés dans ASP.NET 1.1
|
| auteur : Didier Danse |
Il existe plusieurs réponses possibles à cette question:
1° dans le code, à chaque fois que l'on crèe un objet XXXConnection
2° dans le code, dans une variable statique dans chaque page
3° dans le code, dans une variable statique et publique dans une des pages
4° dans le Global.asax
5° dans le Web.Config
6° un mix des deux dernières solutions
De 1 à 3, ce sont des solutions à proscrire car toutes modifications sur la base
(changement de serveur, changement du mot de passe ou du login ou encore du type
de sécurité mise en place) nécessite une recompilation de toute l'application.
Pour le point 4, la solution est très interressante car il est possible de définir
une variable statique comme ci dessous:
Public Shared ConnectionString As String = " la chaine de connexion "
|
L'appel dans le code se fait alors par:
Dim cs As String = Global. ConnectionString
|
Cependant toute modification du fichier nécessite un redémarrage de l'application
(effectué implicitement).
Le point 5, avec l'utilisation des attributs <appSetting> est très interressant
puisqu'il est possible de modifier la valeur à chaud, sans redémarrage de l'application.
Pour lire la valeur:
System. Configuration . ConfigurationManager . AppSettings (" clé " )
|
A chaque appel, il y a un accès au fichier Web.Config. + !! probleme de string !!
En utilisant les avantages de l'un et de l'autre, on arrive à la situation suivante:
On ne lit qu'une fois le Web.Config et on garde la valeur en mémoire, à l'aide d'une
variable au sein de la classe Global.
|
| auteur : Didier Danse | Le framework fournit des méthodes pour y accéder. Utilisez simplement :
Dim constr as String
constr = ConfigurationManager. ConnectionStrings (" ConStr " ). ConnectionString
|
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2007
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|