Управление файлами изображений (элементы управления диаграммы)
Если свойство RenderType имеет значение ImageTag, то элемент управления диаграммы сохраняет обработанные изображения диаграммы в виде файлов в памяти или на диске (дополнительные сведения см. в разделе Визуализация изображений диаграммы). Можно задать порядок управления файлами изображения в элементе управления диаграммы. Для этого воспользуйтесь свойством ImageStorageMode.
В свойстве ImageStorageMode можно выбрать управление файлами изображений с помощью обработчика HTTP-данных диаграммы или управление вручную.
Использование обработчика HTTP-данных диаграммы
По умолчанию свойство ImageStorageMode имеет значение UseHttpHandler. В этом случае элемент управления диаграммы использует для управления обработанными изображениями диаграммы обработчик ChartHttpHandler, зарегистрированный в файле Web.config.
Обработчик HTTP-данных диаграммы выполняет следующие задачи.
Предотвращение конфликтов перезаписи файлов в кластере серверов или на узле с несколькими процессами.
Обеспечение безопасности обработанных изображений диаграммы: пользователям запрещается загружать изображения диаграммы, обработанные для других пользователей.
Сокращение числа дисковых операций за счет хранения файлов изображения в памяти или использования других систем хранения, например Microsoft SQL Server.
Использование
Когда элемент управления диаграммы перетаскивается из области элементов в область конструктора страницы ASP.NET, обработчик ChartHttpHandler автоматически регистрируется в файле Web.config в качестве ChartImageHandler. Порядок работы ChartImageHandler можно настроить в элементе <appSettings>. Далее приведен необходимый раздел кода с автоматически созданными параметрами.
<appSettings>
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
</appSettings>
Параметры в атрибуте value позволяют настроить обработчик HTTP-данных диаграммы. Описание каждого параметра см. в следующей таблице.
Параметр |
Описание |
---|---|
storage |
Режим хранения. Возможны три значения.
|
url |
Относительный URL-адрес, по которому хранится изображение. Если указан параметр dir, то он используется вместо url. Значение по умолчанию — «~/». |
dir |
Абсолютный путь к каталогу для хранения изображений. Можно использовать локальный или сетевой путь. В среде кластера серверов используйте сетевой путь, чтобы хранить временные файлы в общедоступном расположении. Каждому временному файлу назначается уникальный идентификатор компьютера, чтобы исключить ошибочную перезапись. |
timeout |
Время ожидания обработанных изображений диаграммы (в секундах). По истечении этого периода изображение может замещаться новым. Значение по умолчанию — 30. |
handler |
Пользовательская реализация интерфейса IChartStorageHandler. Значение должно иметь формат полного имени сборки. Например, MyNamespace.MyClass.MyHandler. |
privateImages |
Защита конфиденциальности. Если установлено значение true, то созданное изображение может загружаться только владельцем в случае, когда применяются следующие типы идентификации.
Значение по умолчанию — true. |
deleteAfterServicing |
Показывает, нужно ли удалять изображение после успешной загрузки с клиента. Значение по умолчанию — true. |
webDevServerUseConfigSettings |
Показывает, нужно ли хранить обработанные изображения диаграммы в памяти, когда приложение работает в режиме полного доверия с использованием сервера разработки Visual Studio. Значение по умолчанию — true. Это может означать, что параметры в файле Web.config не действуют, когда приложение ASP.NET запускается из Visual Studio. |
Параметры конфигурации на различных уровнях доверия
В следующем списке показаны уровни доверия и их воздействие на параметры конфигурации в файле Web.config.
Полное доверие: применяются все варианты конфигурации.
Высокое доверие: не удается обнаружить сервер разработки ASP.NET. И параметр webDevServerUseConfigSettings не действует.
Среднее доверие: аналогично высокому доверию.
Низкое доверие: аналогично высокому доверию, однако доступ к файлам запрещается. Параметр storage необходимо установить в значение session или memory.
Минимальное доверие: аналогично низкому доверию, однако не удается обнаружить обработчик HTTP-данных диаграммы. Это значит, что в файле Web.config обязательно наличие раздела ChartImageHandler.
Управление изображениями вручную
Для управления обработанными изображениями диаграммы вручную установите свойство ImageStorageMode в значение UseImageLocation, а затем установите в свойстве ImageLocation абсолютный или относительный путь.
Примечание
В этом режиме каждый элемент управления диаграммы независимо управляет хранением одного изображения.
Свойство ImageLocation может содержать путь, а также определенные ключевые слова. Например, «~/Temp/ChartPic_#SEQ(300,5)». Эта строка состоит из трех элементов.
Абсолютный или относительный путь к каталогу. Например, «~/Temp/».
Имя файла или общее начало для всех имен файлов изображений. Например, «ChartPicture_».
Ключевое слово. Например, «#SEQ(300, 5)».
ImageLocation без ключевых слов
Если указать расположение образа без ключевого слова, то элемент управления диаграммы использует один файл для визуализации всех образов. Путь к результирующему файлу представляет каталог, начинающийся с указанного текста, а расширение указывается в свойстве ImageType. Например, «~/Temp/ChartPicture_.png».
Учтите, что если данные или внешний вид диаграммы часто меняются, то файл изображения может оказаться перезаписан до того, как будет отправлен клиенту, и в результате клиент получит неправильное изображение. Чтобы избежать эту проблему, используйте одно из ключевых слов.
ImageLocation с ключевыми словами
В свойство ImageLocation можно вставлять три различных ключевых слова.
Ключевое слово |
Описание |
---|---|
#UID |
Создает уникальные идентификатор для каждого обработанного изображения диаграммы. Например, «~/Temp/ChartPicture#UID». Использование этого ключевого слова гарантирует, что сервер будет отвечать на каждый запрос страницы, передавая правильное изображение. Старые файлы необходимо удалять вручную, в противном случае их количество будет неограниченно увеличиваться. |
#SEQ(maxFiles,minutes) |
Создает порядковый номер файла до числа, определенного параметром maxFiles, а затем начинает последовательность заново, заменяя первый файл в последовательности. Например, строка «Picture_#SEQ(300,5)» создает следующие имена файлов (предполагая, что свойство ImageType имеет значение Png): Picture_000001.jpg, Picture_000002.jpg... Параметр minutes задает время ожидания для каждого файла в последовательности, однако он не гарантирует допустимость имени файла в течение указанного периода. Если файл перезаписывается до истечения времени ожидания, то в журнал событий приложения вставляется предупреждение. Чтобы предотвратить ошибочную перезапись файлов изображений, для параметра maxFile следует установить достаточно большое значение. |
#NOGUIDPARAM |
Удаляет строку идентификатора GUID из URL-адреса файла изображения. Например, «Picture_#SEQ(300,5)#NOGUIDPARAM». По умолчанию элемент управления диаграммы добавляет к URL-адресу изображения строку идентификатора GUID. |
Тип изображения и сжатие
Чтобы указать тип изображения в случае, когда изображения диаграммы сохраняются во временных файлах, используйте свойство ImageType элемента управления диаграммы. Если это свойство установлено в значение Jpeg, также можно указать сжатие JPEG в свойстве Compression элемента управления диаграммы.