Проблема: Хранилище таблиц 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 и верните объект во внешний интерфейс (который не реализован как часть этого блога).

Просмотрите код здесь