Проблема: Хранилище таблиц Azure имеет ограничение для каждого типа свойства. Если тип свойства - byte [], тогда столбец может хранить до 64 КБ, если тип свойства - строка, тогда столбец может хранить до 64 КБ. Поскольку существуют определенные ограничения на размер столбца в хранилище таблиц Azure, мы обычно сталкиваемся с ошибкой ниже при хранении больших объемов данных для определенного ключа раздела.
«Удаленный сервер возвратил ошибку: (413) Текст запроса слишком велик и превышает максимально допустимый предел».
Or
«Длина блока не соответствует его дополнению».
Решение:
Хранение данных в хранилище таблиц Azure
Мы используем для хранения конфигураций в нашем хранилище таблиц. А для некоторых ключей раздела наше поле данных превышает максимально допустимый размер byte [].
Дополнительная информация о хранилище таблиц Azure и ограничениях столбцов находится здесь.
Чтобы преодолеть это, мы сохранили данные в хранилище BLOB-объектов и сохранили URI-адрес BLOB-объекта в соответствующем столбце данных хранилища таблиц.
Хранение данных в хранилище таблиц следующим образом.
1) Инициализировать хранилище таблиц и BLOB-объектов.
2) Добавить объект в таблицу.
Необходимо создать конструктор без параметров, иначе выполнение табличных операций вызовет следующее исключение.
3) Хранить данные байта [] в хранилище BLOB-объектов.
4) Получите Blob URI.
var uri = blockBlob.Uri;
5) Сохраните URI большого двоичного объекта в хранилище таблиц Azure. Проверьте, существует ли таблица.
a) Если существует, то получить данные таблицы и заменить данные обновленным объектом.
б) Если не существует, создайте таблицу и сохраните данные.
Вот данные хранилища таблиц после сохранения данных в хранилище BLOB-объектов и сохранения URI большого двоичного объекта в хранилище таблиц Azure.
Получить сохраненные данные
При получении данных из хранилища таблиц Azure считайте значения из хранилища таблиц Azure, а затем получите фактические данные из потока.
1) Доступ к данным из хранилища таблиц Azure
2) Прочтите фактические данные из URI большого двоичного объекта (который хранится в хранилище таблиц Azure).
Назначьте фактические данные большого двоичного объекта объекту Settings и верните объект во внешний интерфейс (который не реализован как часть этого блога).
Просмотрите код здесь