Хранилище Azure: метаданные файлов

Я создаю веб-приложение для периодического (запланированного) чтения файлового ресурса Azure и обработки файлов. Я использую предоставленные примеры C# ApI, но не могу понять, как получить метаданные файла с моим списком каталогов. Я хотел бы сделать что-то столь же простое, как сортировка файлов по дате изменения. Есть ли у кого-нибудь пример получения метаданных с помощью Listing Files.

 FileResultSegment resultSegment = await share.GetRootDirectoryReference().ListFilesAndDirectoriesSegmentedAsync(token);
 results.AddRange(resultSegment.Results);

В результате для IListFileItem ниже не определены MetaData или Properties.

foreach (IListFileItem listItem in results)
            {
                // listItem type will be CloudFile or CloudFileDirectory
                Console.WriteLine("- {0} (type: {1})", listItem.Uri, listItem.GetType());
            }

person WadeB    schedule 27.01.2016    source источник
comment
К вашему сведению: если вы используете методы сегментированного списка, вам необходимо следовать маркерам продолжения, иначе вы не получите полный список результатов. Если вы не хотите отслеживать токены продолжения вручную, используйте метод ListFilesAndDirectories, а не сегментированную версию, которая вернет итератор для ленивого получения результатов.   -  person Emily Gerner    schedule 28.01.2016


Ответы (2)


Как насчет кастинга ваших результатов?

foreach (var item in results)
{
    if (item is CloudFile)
    {
        var cloudFile = (CloudFile) item;

        // You can now access metadata and properties
        //cloudFile.Metadata
        //cloudFile.Properties
    }
    else if (item is CloudFileDirectory)
    {
        var cloudFileDirectory = (CloudFileDirectory)item;
        // You can now access metadata and properties
        //cloudFileDirectory.Metadata
        //cloudFileDirectory.Properties
    }
}
person Thomas    schedule 27.01.2016
comment
Свойства все еще не заполнены. Кажется, мне нужно сообщить запросу, что я хочу их, но я не вижу этих вариантов. Я надеюсь, что свойства CloudFile не просто устанавливаются при извлечении файла. - person WadeB; 27.01.2016

Опираясь на пост Томаса... Это единственный способ, который я нашел.

foreach (var item in results)
{
    if (item is CloudFile)
    {
        var cloudFile = (CloudFile) item;
        cloudFile.FetchAttributes();

        // You can now access metadata and properties
        //cloudFile.Metadata
        //cloudFile.Properties
    }
    else if (item is CloudFileDirectory)
    {
        var cloudFileDirectory = (CloudFileDirectory)item;
        // You can now access metadata and properties
        //cloudFileDirectory.Metadata
        //cloudFileDirectory.Properties
    }
}
person WadeB    schedule 27.01.2016
comment
К сожалению, листинг не возвращает свойства/метаданные для файлов. Это правильное решение. - person Emily Gerner; 28.01.2016