Мы используем общий доступ к файлам через учетную запись хранения Azure. В рамках нашего приложения мы присваиваем идентификатор каждому файлу и сохраняем его в метаданных:
Установите этот идентификатор с помощью этого блока кода:
public static void SetId(this CloudFile cloudFile, Guid id)
{
cloudFile.Metadata[DocumentDbId] = id.ToString();
cloudFile.SetMetadata();
}
Однако, когда этот файл редактируется в Microsoft Word 2013 (все файлы имеют формат .docx), эти метаданные стираются, и мы теряем ссылки.
Если я создаю текстовый файл, присваиваю ему идентификатор в метаданных, затем редактирую его блокнотом, то эти метаданные остаются там, где должны быть, и не стираются.
Почему редактирование в MS Word стирает метаданные? и как этого не допустить? Есть ли альтернативный способ установить произвольный идентификатор, который не стирается при редактировании?
UPD: Просто поясню, что это мой сценарий: я подключаю файловый ресурс как локальный диск через net use K: \http://myaccount.file.core.windows.net \tests /u:AZURE\myaccount uNrI0yyRxyMx
, я помещаю файл .docx
на диск. В MS Azure Storage Explorer я щелкаю файл правой кнопкой мыши, добавляю метаданные - любые метаданные, сохраняю их (пробовал это с С#, как указано выше, но результат тот же). Проверьте еще раз, чтобы убедиться, что метаданные были сохранены. Затем откройте этот файл с подключенного диска в MS Word, внесите изменения, сохраните его. Проверьте метаданные файла, там ничего нет.
Но если я создам текстовый файл, добавлю метаданные, затем отредактирую файл с помощью блокнота ++, сохраним его. Метаданные не удаляются. Итак, что-то, что MS Word делает, чтобы стереть метаданные