Nouvelles Chroniques d'Amethyste

Penser au Sens, pas au Verbe

Azure Web Sites: comment fonctionnent AppSettings et ConnectionStrings

Poster un commentaire

Les Web Sites Azure sont des applications comme les autres et utilisent les sections <appSettings> et <connectionStrings>.

Celles-ci ont toutefois un comportement particulier qui les relient aux variables d’environnement et simplifie considérablement l’écriture de web jobs.

C’est ce que nous allons voir dans cet article et au passage expliquer le comportement qui a été démontré dans cet article:

https://amethyste16.wordpress.com/2014/10/29/le-fichier-config-sous-azure/

Les web sites permettent la sauvegarde dans Azure de liste de paires clef/valeur depuis l’onglet CONFIGURE:

2015-01-12_14-00-54

Elles sont disponibles depuis votre code exactement comme s’il s’agissait d’une déclaration dans les sections <appSettings> ou bien <connectionStrings>.

Ces clefs sont enregistrées dans Azure, on a donc pas besoin de les placer dans le fichier de configuration web.config ce qui est appréciable s’il s’agit de données sensibles comme les mots de passe.

 

Le point intéressant est que l’on peut retrouver ces valeurs sous la forme de variables d’environnement. Ce qui est beaucoup plus confortable pour les scripts de web jobs, notamment s’il s’agit de .bat.

Comment les choses fonctionnent t’elle?

 

On va se monter l’exemple suivant:

2015-01-12_14-10-49

Et puis un web site. On remplacera la page par défaut par ce code:


@using System.Configuration

AmethysteAppSettings: @Environment.GetEnvironmentVariable("APPSETTING_AmethysteAppSettings")
<br/>
AmethysteConnectionString: @Environment.GetEnvironmentVariable("SQLAZURECONNSTR_AmethysteConnectionString")
<br/>
AmethysteAppSettings: @ConfigurationManager.AppSettings["AmethysteAppSettings"]
<br/>
AmethysteConnectionString: @ConfigurationManager.ConnectionStrings["AmethysteConnectionString"]

 

On détaillera la syntaxe des deux premières lignes plus tard. Remarquons juste pour l’instant qu’elles se réfèrent à des variables d’environnement.

Lancez le site et ceci doit s’afficher:

2015-01-12_22-19-55

Ce qu’il faut retenir est que ça marche.

La syntaxe avec ConfigurationManager est assez classique, plus intéressante est celle avec Environment.

Tout d’abord cela confirme ce que j’expliquais tout à l’heure. Les variables Azure sont transformées en variables d’environnement.

Regardez bien la syntaxe.

Les valeurs AppSettings doivent être préfixées par APPSETTING_.

Les valeurs de la chaîne de connexion par SQLAZURECONSTR_… pour les chaîne de connexion SQL Azure. D’autres types sont en fait possibles:

2015-01-12_22-25-14

On a la correspondance suivante:

  • SQL Database: SQLAZURECONSTR_
  • SQL Server: SQLCONNSTR_
  • MySQL: MYSQLCONSTR_
  • Custom: CUSTOMCONSTR_

Que se passerait t’il si une de ces variables étaient déjà définies dans le fichier de configuration? La configuration du portail prend le dessus et elles seront écrasées.

Ces paramètres sont accessibles depuis PowerShell, par exemple pour créer un web job:

$env:APPSETTING_AmethysteAppSettings
$env:SQLAZURECONNSTR_AmethysteConnectionString

Qui affiche dans les logs les même informations que celles vues dans la page Web précédente.

 Bibliographie

 http://azure.microsoft.com/blog/2013/07/17/windows-azure-web-sites-how-application-strings-and-connection-strings-work/

 

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s