Gestion des fichiers image (contrôles Chart)
Lorsque la propriété RenderType a la valeur ImageTag, le contrôle Chart enregistre en tant que fichiers en mémoire ou sur disque les images de graphique rendues (pour plus d'informations, consultez Rendu de l'image du graphique). Vous pouvez spécifier la manière dont le contrôle Chart gère les fichiers image. Pour ce faire, utilisez la propriété ImageStorageMode.
Dans la propriété ImageStorageMode, vous indiquez si les fichiers image seront gérés par le gestionnaire HTTP du graphique ou manuellement.
Utilisation du gestionnaire HTTP du graphique
Par défaut, la propriété ImageStorageMode a la valeur UseHttpHandler. Le contrôle Chart utilise alors le ChartHttpHandler enregistré dans le fichier Web.config pour gérer les images de graphique rendues.
Utilisez le gestionnaire HTTP du graphique pour :
empêcher des collisions de substitution de fichiers dans un cluster de serveurs ou un site impliquant plusieurs processus ;
assurer la sécurité des images de graphique rendues en empêchant des utilisateurs de télécharger des images de graphique rendues pour d'autres utilisateurs ;
réduire les opérations de disque en stockant les fichiers image en mémoire ou en employant d'autres options de stockage, telles que Microsoft SQL Server.
Utilisation
Lorsque vous faites glisser un contrôle Chart de la Boîte à outils vers l'aire de conception de la page ASP.NET, le ChartHttpHandler est automatiquement enregistré dans le fichier Web.config comme "ChartImageHandler". Vous pouvez configurer le comportement de ChartImageHandler dans l'élément <appSettings>. La section de code concernée est fournie ci-dessous avec les paramètres générés automatiquement :
<appSettings>
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
</appSettings>
Utilisez les paramètres de l'attribut value pour configurer le gestionnaire HTTP du graphique. Reportez-vous au tableau ci-dessous pour obtenir la description de chaque paramètre.
Paramètre |
Description |
---|---|
storage |
Mode de stockage. Trois options sont disponibles :
|
url |
URL relative de l'emplacement de stockage des images. S'il est spécifié, le paramètre dir est utilisé à la place de url. La valeur par défaut est "~/". |
dir |
Chemin d'accès absolu à l'emplacement de stockage des images. Il peut s'agir d'un chemin d'accès local ou réseau. Dans un environnement de cluster de serveurs, utilisez un chemin d'accès réseau afin de conserver les fichiers temporaires dans un emplacement partagé. Chaque fichier temporaire reçoit un ID d'ordinateur unique pour empêcher les remplacements inopportuns de fichiers. |
timeout |
Délai d'attente, en secondes, pour les images de graphique rendues. Une fois ce délai écoulé, une image plus récente peut remplacer la précédente. La valeur par défaut est 30. |
handler |
Implémentation IChartStorageHandler personnalisée. La valeur doit se présenter sous la forme d'un nom d'assembly qualifié complet. Par exemple : MyNamespace.MyClass.MyHandler. |
privateImages |
Protection de la confidentialité. Lorsque ce paramètre a la valeur True, l'image générée ne peut être téléchargée que par son propriétaire si certains des types suivants d'identification sont utilisés :
La valeur par défaut est true. |
deleteAfterServicing |
Indique si l'image doit être supprimée après avoir été correctement téléchargée par un client. La valeur par défaut est true. |
webDevServerUseConfigSettings |
Indique si les images de graphique rendues doivent être stockées en mémoire lors de l'exécution de l'application avec le niveau de confiance totale à l'aide du serveur de développement Visual Studio. La valeur par défaut est true. Cela peut signifier que les paramètres que vous avez définis dans le fichier Web.config resteront sans effet lorsque vous exécuterez l'application ASP.NET à partir de Visual Studio. |
Paramètres de configuration dans les différents niveaux de confiance
La liste qui suit présente les différents niveaux de confiance et leur incidence sur les paramètres de configuration du fichier Web.config.
Confiance totale Toutes les variantes de la configuration s'appliquent.
Confiance élevée Le serveur de développement ASP.NET ne peut pas être détecté. Par conséquent, webDevServerUseConfigSettings est sans effet.
Confiance moyenne Identique à la confiance élevée.
Confiance basse Identique à la confiance élevée, mais l'accès aux fichiers est interdit. Le paramètre storage doit avoir la valeur session ou memory.
Confiance minimale Identique à la confiance basse, mais la détection du gestionnaire HTTP du graphique échoue. Cela signifie que la clé ChartImageHandler de votre fichier Web.config est obligatoire.
Gestion manuelle des images
Pour gérer manuellement les images de graphique rendues, affectez à la propriété ImageStorageMode la valeur UseImageLocation, puis à la propriété ImageLocation un chemin d'accès absolu ou relatif.
Notes
Dans ce mode, chaque contrôle Chart gère de façon indépendante son stockage des images.
La propriété ImageLocation peut contenir le chemin d'accès ainsi que certains mots clés. Par exemple : "~/Temp/ChartPic_#SEQ(300,5)". Cette chaîne est composée de trois éléments :
le chemin d'accès absolu ou relatif (par exemple, "~/Temp/") ;
le nom du fichier ou le texte de début de tous les noms de fichiers image (par exemple, "ChartPicture_") ;
un mot clé (par exemple, "#SEQ(300, 5)").
ImageLocation sans mots clés
Si vous spécifiez un emplacement d'image sans mot clé, le contrôle Chart utilise un fichier unique pour le rendu de toutes les images. Le chemin d'accès relatif résultant est le répertoire avec le texte de début que vous spécifiez et l'extension de fichier spécifiée dans la propriété ImageType. Par exemple : "~/Temp/ChartPicture_.png".
Notez que si les données ou l'apparence du graphique changent fréquemment, le fichier image peut être remplacé avant son envoi au client, lequel peut par conséquent recevoir une image incorrecte. Pour éviter ce problème, utilisez l'un des mots clés.
ImageLocation avec mots clés
Vous pouvez insérer trois mots clés différents dans la propriété ImageLocation.
Mot clé |
Description |
---|---|
#UID |
Générez un identificateur unique pour chaque image de graphique rendue. Par exemple : "~/Temp/ChartPicture#UID". L'utilisation de ce mot clé permet de s'assurer que le serveur répond à chaque demande de page avec l'image rendue correcte. Vous devez supprimer manuellement les anciens fichiers. Sinon, le nombre de fichiers augmente indéfiniment. |
#SEQ(maxFiles,minutes) |
Génère un numéro de séquence de fichier, jusqu'au numéro défini par maxFiles, puis recommence la séquence et remplace le premier fichier de la séquence. Par exemple : "Picture_#SEQ (300,5)" génère les noms de fichiers suivants (en supposant que la valeur de ImageType soit Png) : Picture_000001.jpg, Picture_000002.jpg,... Le paramètre minutes spécifie le délai d'attente pour chaque fichier dans la séquence. Toutefois, il ne garantit pas la validité d'un nom de fichier pour la période spécifiée. Si un fichier est recyclé avant que son délai d'attente ne soit dépassé, un message d'avertissement est inséré dans le journal des événements de l'application. Vous devez affecter au paramètre maxFile un numéro suffisamment grand pour éviter le remplacement inopportun de fichiers image. |
#NOGUIDPARAM |
Supprime la chaîne GUID de l'URL du fichier image. Par exemple : "Picture_#SEQ(300,5)#NOGUIDPARAM". Par défaut, le contrôle Chart ajoute une chaîne GUID à l'URL de l'image. |
Type d'image et compression
Pour spécifier le type d'image lorsque les images du graphique sont enregistrées dans des fichiers temporaires, utilisez la propriété ImageType du contrôle Chart. Si vous affectez à cette propriété la valeur Jpeg, vous pouvez également spécifier la compression JPEG dans la propriété Compression du contrôle Chart.