1

Ich habe ein Problem beim Zugriff auf BLOB-Speicher von einer App Service Mobile App (Not MobileService). Ich habe früher eine MobileService ausführt, die den Blob Storage in der folgenden Art und Weise zugegriffen:BLOB-Speicherzugriff von Azure App Service

// Set the URI for the Blob Storage service. 
Uri blobEndpoint = new Uri(string.Format("https://{0}.blob.core.windows.net", storageAccountName)); 

// Create the BLOB service client. 
CloudBlobClient blobClient = new CloudBlobClient(blobEndpoint, 
new StorageCredentials(storageAccountName, storageAccountKey)); 

den Code Aktualisieren auf den neuen Dienst zu arbeiten, immer noch nicht helfen. Die Datenverbindung scheint korrekt zu sein:

Daher unter Bezugnahme auf diese Links azure configuration | azure connection string | azure get started blob storage.

Ich habe die Datenverbindung extrahiert und den `MS_AzureStorageAccountConnectionString 'implementiert. Ich habe die folgenden Methoden, um den richtigen Zugang zu überprüfen, wird gefunden:

string tempstorage = ""; 
try 
{ 
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("MS_AzureStorageAccountConnectionString")); 
    tempstorage = storageAccount.BlobEndpoint.ToString() + "  " + storageAccount.BlobStorageUri.ToString(); 

    //Uri blobEndpoint = storageAccount.TableStorageUri.GetUri(StorageLocation.Primary); 
} 
catch 
{ 
} 
string cloud = ""; 
try 
{ 
    CloudStorageAccount temp = CloudStorageAccount.DevelopmentStorageAccount; 
    Uri endPoit = temp.BlobEndpoint; 
    string uri = temp.BlobStorageUri.ToString(); 
    cloud = uri + "   " + endPoit.ToString(); 
} 
catch 
{ 
} 
return Ok("coud : " + cloud + "  temp storage : " + tempstorage); 

Rückgabewert:

coud: Primär = 'http://127.0.0.1:10000/devstoreaccount1'; Secondary = ‚http://127.0.0.1:10000/devstoreaccount1-secondaryhttp://127.0.0.1:10000/devstoreaccount1 Temperaturlagerung:

Dies zeigt, wird der Zugriff auf die Storage emulator was nicht erwünscht ist.

Frage

Wie die Uri für die Azure online storage so erhalten, wie es aus dem Azure app service zuzugreifen.

Update auf dem Kommentar basierten

ich den Antrag auf Cloud-Konfiguration wie die Anwendungseinstellungen für die App Service auf dem azurblauen Portal interpretiert.

<configuration> 
    <connectionStrings> 
     <add name="MS_AzureStorageAccountConnectionString" connectionString="DefaultEndpointsProtocol=https;AccountName=Name;AccountKey=key1_from_access_Keys" /> 
    </connectionStrings> 
<configuration> 
+0

Leider nicht ganz klar. Könnten Sie bitte klarstellen, was Sie erhalten, was Sie erhalten müssen? URIs scheinen korrekt zu sein. –

+0

@AlexBelotserkovskiy okay, ich werde umschreiben, wenn ich an einem PC bin.Meine Frage ist, dass das URI-Schema völlig anders ist als bei MobileService. Warum ist das? In den gleichen Zeilen hat die URI devstoreaccount1, was ist nicht der Name des Speichers? Ist der URI, weil sie in derselben Ressourcengruppe existieren und daher eine lokale Verbindung haben? (Ich kann sehen, dass ich die Frage zu lange geschrieben habe. Ich werde umschreiben, danke, dass du meine Aufmerksamkeit darauf gelenkt hast!) – JTIM

+0

Devstoreaccount ist der lokale Speicheremulator. 127.0.0.1 auch. Überprüfe, was du in deiner Cloud-Konfiguration hast - wenn du devstiragaccount siehst, bedeutet das, dass dein Projekt auf etwas Lokales abzielt. –

Antwort

1

habe ich versucht, neu zu erstellen, um das Problem der Code verwendet wird, und das ist, was ich getan:

1) Klicken Sie auf das Projekt => Hinzufügen => Connected SERVICE = > Azure Storage => Wählen Sie Ihr Speicherkonto. Dadurch werden alle benötigten Bibliotheken und die gültige Verbindungszeichenfolge in Ihrer web.config installiert.

2) Ich habe Ihren Code in die HomeController-Index-Aktion kopiert und eingefügt und konnte das Problem erneut erstellen. Im Grunde sieht es so aus, als ob Sie die Werte und Variablen geändert haben. Der Arbeitscode ist unten. Das erste Snippet ist für Controller, das zweite sollte in der Indexansicht sein. Ich benutze MVC, und Sie sehen aus wie Web-API verwenden, sollte keinen Unterschied machen.

string tempstorage = ""; 
     string cloud = ""; 
     try 
     { 
      CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("allinazure_AzureStorageConnectionString")); 
      cloud = storageAccount.BlobEndpoint.ToString() + "  " + storageAccount.BlobStorageUri.ToString();     
     } 
     catch 
     { 
     } 

     try 
     { 
      CloudStorageAccount temp = CloudStorageAccount.DevelopmentStorageAccount; 
      Uri endPoit = temp.BlobEndpoint; 
      string uri = temp.BlobStorageUri.ToString(); 
      tempstorage = uri + "   " + endPoit.ToString(); 
     } 
     catch 
     { 
     } 
    ViewBag.LocalStorage = "cloud storage" + cloud; 
     ViewBag.CloudStorage = "local storage : " + tempstorage; 

     return View(); 

Index Ansicht irgendwo:

@ViewBag.LocalStorage 
@ViewBag.CloudStorage 

enter image description here

+0

Vielen Dank für diese Hilfe, ich habe eine featured Frage (Bonus) über einen Dienst für zwei Clients, http://StackOverflow.com/Questions/36402899/Same-Table-Notification-Hub-and-Server-for- Zwei-Apps. Nochmals vielen Dank das funktioniert :) – JTIM

+0

nach diesem Test schien es zu funktionieren, jetzt, nachdem ich den Client aktualisiert und einen neuen Dienst erstellt der obige Code funktioniert gut. Aber ich ende mit einem Fehler von der folgenden 'erwarten container.CreateIfNotExistsAsync();' -Funktion. Wenn Sie Zeit haben, würde ich Ihre Hilfe wieder zu schätzen http://stackoverflow.com/questions/37050344/create-blob-container-for-azure-app-service – JTIM