Administrar archivos de imagen (Controles Chart)
Cuando la propiedad RenderType está establecida en ImageTag, el control Chart guarda las imágenes del gráfico como archivos en memoria o en disco (para obtener más información, vea Presentar imágenes de un gráfico). Puede especificar cómo el control Chart administra los archivos de imagen. Para hacerlo, use la propiedad ImageStorageMode.
En la propiedad ImageStorageMode, puede elegir entre usar el controlador HTTP del gráfico para administrar los archivos de imagen o administrarlos manualmente.
Utilizar el controlador HTTP del gráfico
De forma predeterminada, la propiedad ImageStorageMode se establece en UseHttpHandler. Esto hace que el control Chart utilice el ChartHttpHandler que se encuentra registrado en el archivo Web.config para administrar las imágenes del gráfico presentadas.
Utilice el controlador HTTP de gráfico para:
Evitar colisiones de invalidación de archivos en un clúster de servidores o un sitio con multiproceso.
Proteger la seguridad de las imágenes de gráfico presentadas evitando que los usuarios puedan descargar imágenes de gráfico para otros usuarios.
Reducir las operaciones de disco almacenando los archivos de imagen en memoria o en otras opciones de almacenamiento, como Microsoft SQL Server.
Uso
Al arrastrar un control Chart desde el Cuadro de herramientas a la superficie de diseño de la página ASP.NET, el controlador ChartHttpHandler se registra automáticamente en el archivo Web.config como "ChartImageHandler". Puede configurar el comportamiento de ChartImageHandler en el elemento <appSettings>. La sección de código aplicable se muestra a continuación con los valores de configuración generados automáticamente:
<appSettings>
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
</appSettings>
Utilice los parámetros del atributo value para configurar el controlador HTTP del gráfico. Vea la tabla siguiente para obtener una descripción de cada parámetro.
Parámetro |
Descripción |
---|---|
storage |
Modo de almacenamiento. Hay tres opciones disponibles:
|
url |
Dirección URL relativa de la ubicación donde se almacenan las imágenes. Si se especifica el parámetro dir, este se utilizará en lugar de url. El valor predeterminado es "~/". |
dir |
Ruta de acceso absoluta al directorio donde se almacenan las imágenes. Esta puede ser una ruta de acceso local o una ruta de acceso de red. En un entorno de clúster de servidores, utilice una ruta de acceso de red para guardar los archivos temporales en una ubicación compartida. Cada archivo temporal tiene asignado un identificador de equipo único para evitar que los archivos sean reemplazados de forma inapropiada. |
timeout |
Período de tiempo de espera en segundos para las imágenes de gráfico. Una vez transcurrido este tiempo para una imagen, ya puede ser reemplazada por una imagen más nueva. El valor predeterminado es 30. |
handler |
Implementación de IChartStorageHandler personalizada. El valor debería tener el formato de un nombre completo de ensamblado. Por ejemplo: MyNamespace.MyClass.MyHandler. |
privateImages |
Protección de la privacidad. Cuando presenta el valor true, solo el propietario de la imagen podrá descargarla si se aplican algunos de los siguientes tipos de identificaciones:
El valor predeterminado es true. |
deleteAfterServicing |
Indica si la imagen se debería eliminar después de su descarga correcta desde un cliente. El valor predeterminado es true. |
webDevServerUseConfigSettings |
Indica si se deben almacenar las imágenes del gráfico en memoria al ejecutar la aplicación en el nivel de plena confianza mediante el servidor de desarrollo de Visual Studio. El valor predeterminado es true. Esto puede hacer que su configuración en el archivo Web.config no tenga ningún efecto al ejecutar la aplicación ASP.NET desde Visual Studio. |
Valores de configuración en los diferentes niveles de confianza
La siguiente lista de niveles de confianza indica cómo cada nivel de confianza afecta a los valores de configuración incluidos en el archivo Web.config.
Plena confianza: se aplican todas las variaciones de configuración.
Gran confianza: no se puede detectar el servidor de desarrollo de ASP.NET. Por consiguiente, webDevServerUseConfigSettings no tiene ningún efecto.
Confianza media: igual que el nivel de gran confianza.
Confianza baja: igual que el nivel de gran confianza, excepto que se prohíbe el acceso a los archivos. Al parámetro storage se le debe asignar el valor session o memory.
Confianza mínima: igual que confianza baja, excepto que la detección de controlador HTTP de gráfico no funciona. Esto significa que la clave ChartImageHandler del archivo Web.config es obligatoria.
Administrar las imágenes manualmente
Para administrar manualmente las imágenes del gráfico, establezca la propiedad ImageStorageMode en UseImageLocation y, a continuación, establezca la propiedad ImageLocation en una ruta de acceso absoluta o relativa.
Nota
De este modo, cada control Chart administra su almacenamiento de imágenes independientemente.
La propiedad ImageLocation puede contener la ruta de acceso así como ciertas palabras clave. Por ejemplo: "~/Temp/ChartPic_#SEQ(300,5)". Esta cadena se compone de tres elementos:
Ruta de acceso absoluta o relativa del directorio. Por ejemplo: "~/Temp/".
Nombre de archivo o texto inicial de todos los nombres de archivos de imagen. Por ejemplo: "ChartPicture_".
Palabra clave. Por ejemplo: "#SEQ(300, 5)".
ImageLocation sin palabras clave
Si especifica una ubicación de imágenes sin palabra clave, el control Chart utiliza un único archivo para todas las imágenes presentadas. La ruta de acceso del archivo resultante es el directorio junto con el texto inicial que especifique y la extensión de archivo especificada en la propiedad ImageType. Por ejemplo: "~/Temp/ChartPicture_.png".
Tenga en cuenta que si los datos del gráfico o su apariencia cambian con frecuencia, el archivo de imagen puede resultar reemplazado antes de ser enviado al cliente, haciendo que este reciba una imagen incorrecta. Para evitar este problema, utilice una de las palabras clave.
ImageLocation con palabras clave
Puede insertar tres palabras clave diferentes en la propiedad ImageLocation.
Palabra clave |
Descripción |
---|---|
#UID |
Genera un identificador único para cada imagen del gráfico presentada. Por ejemplo: "~/Temp/ChartPicture#UID". Con esta palabra clave se garantiza que el servidor contestará a cada solicitud de página con la imagen presentada correcta. Deberá quitar los archivos antiguos manualmente. De lo contrario, el número de archivos crecerá indefinidamente. |
#SEQ(maxFiles,minutes) |
Genera un número de secuencia de archivo, hasta el número definido en maxFiles, e inicia de nuevo la secuencia reemplazando el primer archivo de la secuencia. Por ejemplo: "Imagen_#SEQ(300,5)" genera los siguientes nombres de archivo (suponiendo que ImageType tiene el valor Png): Imagen_000001.jpg, Imagen_000002.jpg, ... El parámetro minutes especifica el tiempo de espera para cada archivo en la secuencia. Sin embargo, no garantiza la validez de un nombre de archivo durante el período específico. Si se recicla un archivo antes de superar su tiempo de espera, se insertará un mensaje de advertencia para el archivo en el Registro de eventos de aplicación. Debería establecer el parámetro maxFile en un número razonablemente elevado para evitar que los archivos de imagen sean reemplazados impropiamente. |
#NOGUIDPARAM |
Quita la cadena GUID de la dirección URL del archivo de imagen. Por ejemplo: "Imagen_#SEQ(300,5)#NOGUIDPARAM". De forma predeterminada, el control Chart agrega una cadena GUID a la dirección URL de la imagen. |
Tipo de imagen y compresión
Para especificar el tipo de imagen cuando las imágenes del gráfico se guardan en archivos temporales, utilice la propiedad ImageType del control Chart. Si establece esta propiedad en Jpeg, también puede especificar la compresión JPEG en la propiedad Compression del control Chart.