Проблема с отображением графика в Azure при наличии нескольких экземпляров - PullRequest
1 голос
/ 22 декабря 2011

Я разработал функциональность рендеринга диаграммы в своем веб-приложении и установил следующую настройку для сохранения изображения диаграммы во временной папке, как показано ниже

<add key="ChartImageHandler" value="deleteAfterServicing=false;Storage=file;Timeout=20;URL=~/TempCharts/"/>

Это будет хорошо работать, когда мы тестируем его только в одном экземпляре, но когда мы сделаем более одного экземпляра веб-роли, а затем несколько диаграмм, в некоторых нет, я думаю, что это проблема нескольких стеков серверов (несколько экземпляров).

Какое решение это для нескольких экземпляров?

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

Вы разработали корзину самостоятельно или используете элементы управления диаграммой ASP.NET?Если у вас есть свои, то у вас есть шанс на успех.В опциях я вижу Storage = file .Какие есть другие варианты?

При разработке для Windows Azure вы должны использовать BlobStorage .Таким образом, вы можете изменить свой элемент управления диаграммой для хранения временных файлов изображений в Blob .Более того, если у вас есть полный контроль над пользовательским контролем, вы можете сделать так, чтобы он записывал в BLOB-объект и отображал путь к изображению в самом BLOB-объекте.Вы можете указать свой собственный домен (назовите его images.mysite.com) хранилище BLOB-объектов Azure , а затем заставить пользовательский элемент управления отображать этот URL-адрес непосредственно для клиента (т. Е. http://images.mysite.com/tempcharts/[guid].png).

РЕДАКТИРОВАТЬ

После получения пояснения по использованию элемента управления ASP.NET Chart, есть два решения для успешного запуска элемента управления ASP.NET Chart в Windows Azure:

  1. Изменение конфигурации после это сообщение в блоге .
  2. Реализация собственного HttpHandler для диаграммы .
1 голос
/ 22 декабря 2011

Не совсем понятно, в чем ваша проблема, но я предполагаю ваш компонент построения диаграмм генерирует файл, и вы пытаетесь отобразить отрисованную диаграмму из этого файла при последующих запросах.

Вероятно, проблема заключается в том, что вы сгенерировали его на одном сервере и пытаетесь отобразить его на другом сервере, и он не будет существовать на локальном диске этого компьютера.

В идеале измените свою реализацию, чтобы сгенерировать и сохранить диаграмму в хранилище BLOB-объектов. Вы можете использовать Azure Drive для имитации раздела диска в хранилище BLOB-объектов, что может исключить необходимость изменения кода, но следует помнить, что только один экземпляр виртуальной машины может иметь доступ для записи на диск Azure одновременно, поэтому вы ' Мне нужно будет тщательно продумать, какой экземпляр будет создавать диаграмму в первую очередь. Возможно, в Role Start вы можете попытаться смонтировать диск Azure для доступа к записи и, в случае успеха, сгенерировать диаграмму. Затем он будет доступен для других виртуальных машин, которые подключили тот же диск Azure с доступом для чтения.

...