2017-11-01 2 views
0

Ich erstelle eine Webanwendung als Teil einer Aufgabe, die ich habe. Die Aufgabe besteht darin, einen Audioclip auf eine ASP-Seite hochzuladen, und dann erstellt ein Web-Job daraus ein 20-Sekunden-Sample, das dann auf derselben Seite angezeigt wird. Ich werde es schließlich in Azure bereitstellen müssen, aber im Moment verwende ich lokalen Speicher mit dem Azure Storage Emulator.Zugriff auf Azure-Blob in LocalStorage über seine URL nicht möglich

Die Seite wird korrekt geladen und das Audio wird in den Blob Container hochgeladen. Die Samples werden generiert und im richtigen Ordner abgelegt. Die Samples werden jedoch nicht in den Player geladen, und ich kann nicht über den Browser auf diese Samples zugreifen, auch wenn ich die URL verwende, die ich direkt von den Blobs im Speicher lese.

Blobs in Local Storage

Wenn ich geben Sie diese URL in den Browser (mit der Anwendung und Web Job sowohl Laufen) bekomme ich diese Meldung angezeigt:

Resource Not Found

Mein erster Instinkt war, dass ich didn‘ t über die erforderlichen Berechtigungen für den Zugriff auf den Container verfügen. Soweit ich das beurteilen kann, wurden die Berechtigungen korrekt konfiguriert. Unten ist mein BlobStorageService Klasse, die die Berechtigungen für die Behälter Griffe:

namespace Sampler 
{ 
    public class BlobStorageService 
    { 
     public CloudBlobContainer getCloudBlobContainer() 
     { 
      CloudStorageAccount storageAccount = CloudStorageAccount.Parse 
       (ConfigurationManager.ConnectionStrings["AzureStorage"].ToString()); 

      CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 
      CloudBlobContainer container = blobClient.GetContainerReference("audiostorage"); 

      if (container.CreateIfNotExists()) 
      { 
       BlobContainerPermissions permissions = container.GetPermissions(); 
       permissions.PublicAccess = BlobContainerPublicAccessType.Container; 
       container.SetPermissions(permissions); 
      } 
      return container; 
     } 
    } 

So soweit ich die Berechtigungen sagen kann, sollte ich für den gesamten Behälter und dem Code öffentlich verwendet es direkt von Microsoft Docs kam. Irgendwelche Vorschläge für den nächsten Kurs der Aktion sehr geschätzt und glücklich, mehr Code zu posten, den Sie möglicherweise sehen müssen.

+0

Vielleicht eine dumme Frage, aber sind die Webanwendung und der Emulator auf demselben Computer ausgeführt wie der Browser, mit dem Sie auf die App zugreifen? – JLRishe

+0

JLRishe - Ja, sie laufen alle lokal auf demselben Rechner. Vielen Dank – djmcdee

Antwort

0

Es scheint, dass es in Ihrem Code ein logisches Problem gibt. Wenn der Container existiert, ist die Freigabe des Containers nicht öffentlich, der Standardwert ist privat. Wenn wir versuchen, den Blob im privaten Container aufzulisten, wird das Problem nicht gefunden. Bitte versuchen Sie den folgenden Code zu verwenden. Oder wir könnten Microsoft Azure Storage Exploer verwenden, um den Container öffentlich zu machen und es erneut zu versuchen.

public CloudBlobContainer getCloudBlobContainer() 
    { 
     CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureStorage"].ToString()); 
     CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 
     CloudBlobContainer container = blobClient.GetContainerReference("audiostorage"); 
     container.CreateIfNotExists(); // remove the if condition 
     BlobContainerPermissions permissions = container.GetPermissions(); 
     permissions.PublicAccess = BlobContainerPublicAccessType.Container; 
     container.SetPermissions(permissions); 
     return container; 
    } 
Verwandte Themen