Locale, fuseau horaire et devises
Un autre élément qui a réservé une surprise concerne les paramètres régionaux du conteneur.Dans le Web.config, l’application avait déjà une globalisation fixée à fr-FR. Mais il s’est avéré que cela ne suffisait pas. Pour que les rapports et l’application dans son ensemble fonctionnent correctement, il a aussi fallu configurer explicitement dans le conteneur la culture, la locale système, la liste des langues, le fuseau horaire et les formats monétaires.Notre application génère des documents, travaille avec des dates, des montants, des devises et des représentations textuelles de nombres. Et si le conteneur fonctionne, par exemple, avec les paramètres par défaut, on obtient à nouveau des erreurs dans les rapports, même si tout est correct côté polices :les dates ne s’affichent pas dans le bon format ;les valeurs monétaires utilisent le mauvais séparateur ;le symbole de devise diffère de celui attendu ;le fuseau horaire n’est pas celui attendu.C’est pourquoi le conteneur définit explicitement fr-FR, le fuseau horaire Romance Standard Time et les paramètres de devise via HKEY_USERS\.DEFAULT\Control Panel\International.Il y a aussi une nuance supplémentaire. Comme l’application fonctionne dans IIS, le chargement du profil utilisateur est désactivé pour l’application pool, et les paramètres régionaux nécessaires sont définis pour le profil par défaut.
Droits d’accès et stockage persistant
Viennent ensuite des sujets moins spécifiques à Crystal Reports, liés à l’utilisation du disque pour les logs de l’application.Dans le Dockerfile, le répertoire C:\home\LogFiles\Application est créé séparément, et les droits sont accordés à IIS_IUSRS et IUSR à la fois sur le répertoire de l’application et sur le répertoire des logs.Il est particulièrement important de se rappeler ici que, dans App Service, le chemin C:\home à l’intérieur du conteneur est mappé vers le système de fichiers d’App Service. Autrement dit, les données qui y sont écrites seront accessibles dans le système de fichiers du service et, d’une part, ne disparaîtront pas lors d’un redéploiement du conteneur, et d’autre part, pourront être consultées via les developer tools.
Particularités du logging
Parlons maintenant des logs séparément.Dans le projet, le logging est configuré dans Web.config via log4net. Nous avons configuré deux canaux de sortie.Le premier est un RollingFileAppender, qui écrit dans C:\home\LogFiles\Application\app.log.Le second est un ConsoleAppender, qui écrit dans la sortie standard du conteneur.Ainsi, les logs sont visibles à la fois dans la sortie standard des logs applicatifs d’App Service et sous forme de fichiers dans le système de fichiers du service.L’appender fichier est pratique parce qu’il fournit un vrai rolling log. Dans notre configuration, le log est ajouté au fichier existant, il est rotaté par taille, limité à 10 MB par fichier et conserve jusqu’à 10 archives. De plus, MinimalLock est utilisé, ce qui réduit le risque de problèmes de verrouillage lors de l’écriture dans le fichier.