2016-02-10 5 views
2

Я работаю над проектом Azure Storage, где мне нужно загрузить и загрузить капли в контейнере и перечислить контейнер и blob в списке. Я не могу отобразить контейнер и капли в моем списке.Azure Blob Список контейнеров хранения и blobs

Это мой код в список: enter image description here

И, наконец, код за границы, где я называю загружать, скачивать и список методов:

enter image description here

+2

Любые исключения? Вы прошли через код в отладчике? –

+1

мы обычно предпочитаем, если вы можете включить текст своего кода в вопрос, он делает чтение и тестирование - это проще. –

ответ

3

Причина, почему вы не видите никаких результатов, когда вы щелкаете на Button3 в вашем веб-форму, потому что вы не получаете любые данные из метода ListBlob.

Изменить метод ListBlob возвращать результат, как:

public List<string> GetBlobs() 
{ 
    List<string> blobs = new List<string>(); 

    // Retrieve storage account from connection string. 
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
     CloudConfigurationManager.GetSetting("StorageConnectionString")); 

    // Create the blob client. 
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

    // Retrieve reference to a previously created container. 
    CloudBlobContainer container = blobClient.GetContainerReference("mycontainer"); 

    // Loop over items within the container and output the length and URI. 
    foreach (IListBlobItem item in container.ListBlobs(null, false)) 
    { 
     if (item.GetType() == typeof (CloudBlockBlob)) 
     { 
      CloudBlockBlob blob = (CloudBlockBlob) item; 

      blobs.Add(string.Format("Block blob of length {0}: {1}", blob.Properties.Length, blob.Uri)); 

     } 
     else if (item.GetType() == typeof (CloudPageBlob)) 
     { 
      CloudPageBlob pageBlob = (CloudPageBlob) item; 

      blobs.Add(string.Format("Page blob of length {0}: {1}", pageBlob.Properties.Length, pageBlob.Uri)); 

     } 
     else if (item.GetType() == typeof (CloudBlobDirectory)) 
     { 
      CloudBlobDirectory directory = (CloudBlobDirectory) item; 

      blobs.Add(string.Format("Directory: {0}", directory.Uri)); 
     } 
    } 

    return blobs; 
} 

чем в вашем веб-форму, я предполагаю, что у вас есть ListBox с именем ListBox1. Вызвать метод следующим образом:

protected void Button3_Click(object sender, EventArgs e) 
{ 
    ListBox1.DataSource = GetBlobs(); 
    ListBox1.DataBind(); 
} 
+0

Спасибо :), но теперь, когда я вызываю метод в моей веб-форме, у меня проблема с GetBlob(); Имя GetBlob() не существует в текущем контексте! – Huby03

+0

Ну, теперь он отлично работает, я забыл создать объект своего класса! Я сделал следующее: Список BlobService = новый BlobService(); ListBox1.DataSource = list.ListBlob(); ListBox1.DataBind(); Большое спасибо за помощь! С уважением – Huby03

0

Это не ясно мне какая проблема вы испытываете, поскольку вы не объяснили полностью. Листинг blob в контейнере, включая поддержку поискового вызова, демонстрируется в следующем коде, извлеченном из примера this.

BlobContinuationToken token = null; 
do 
{ 
BlobResultSegment resultSegment = await container.ListBlobsSegmentedAsync(token); 
token = resultSegment.ContinuationToken; 
foreach (IListBlobItem blob in resultSegment.Results) 
{ 
// Blob type will be CloudBlockBlob, CloudPageBlob or CloudBlobDirectory 
Console.WriteLine("{0} (type: {1}", blob.Uri, blob.GetType()); 
} 
} while (token != null); 
Смежные вопросы