2014-09-05 5 views
10

Ich versuche, eine Azure-Website mit einem Azure-Blob zu verbinden (wo ich einige Dateien in einem Container hosten und dann von meiner Website abrufen möchte).Verbinden von Azure Blob mit Azure-Website

begann ich mit diesem Tutorial: http://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-get-started/

ich meine Website bereitgestellt, und begann dann dieses Tutorial folgenden: http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/#setup-connection-string

Da ich eine Azure Website wurde mit, ich den folgenden Code hinzugefügt, um meine web.config-Datei (im WebApplication1-Projekt). Es gibt auch eine web.config Datei unter dem Views Ordner, aber ich habe das nicht geändert.

<configuration> 
    <appSettings> 
     <add key="StorageConnectionString" 
      value="DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key" /> 
    </appSettings> 
</configuration> 

Ich folgte, alle Schritte im Tutorial und installiert die entsprechenden Pakete NuGet und enthalten dann diese Namensräume in meiner Controllers/HomeController.cs Datei:

using System.Configuration; 
using Microsoft.WindowsAzure.Storage; 
using Microsoft.WindowsAzure.Storage.Auth; 
using Microsoft.WindowsAzure.Storage.Blob; 

Dann habe ich die folgende Anweisung in der ActionResult Index() Methode (die läuft standardmäßig).

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString); 

Wenn ich versuche, und die Lösung laufen, habe ich jetzt diese Fehlermeldung erhalten:

enter image description here

Ich versuchte auch direkt den Wert des StorageConnectionString (mit meinen Account-Namen und Schlüssel) setzen statt referenziert darauf in der folgenden Anweisung:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key"].ConnectionString); 

Ich bekomme immer noch den gleichen Fehler. Ich kann nichts im Internet finden. Irgendwelche Ideen?

Danke!

+0

Es könnte von Vorteil sein, wenn Sie liefern als Innerexception, dass einige nützliche Informationen zur Verfügung stellen kann. Ein paar Dinge, die Sie ausprobieren sollten ... Zunächst einmal versucht Ihr zweites Beispiel nach einer ConnectionString namens "DefaultEndpointsProtocol ...." zu suchen, wenn das nur der Wert ist. Zweitens fügen Sie einfach die Zeichenfolge für den Speicheraccount direkt hinzu, z. B. CloudStorageAccount storageAccount = CloudStorageAccount.Parse ("DefaultEndpointsProtocol = https; AccountName = Kontoname; AccountKey = Kontoschlüssel"); – SeanCocteau

Antwort

25

Sie haben einen grundlegenden Fehler in Ihrem Code.

Zuerst setzen Sie ein AppSetting:

<configuration> 
    <appSettings> 
     <add key="StorageConnectionString" 
      value="DefaultEndpointsProtocol=https;AccountName=account- name;AccountKey=account-key" /> 
    </appSettings> 
</configuration> 

Dann versuchen Sie eine Verbindungszeichenfolge zu erhalten:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString); 

Das wird einfach nicht funktionieren. Wenn AppSetting eingestellt ist, müssen Sie AppSetting lesen. Wenn Sie ConnectionString festlegen, müssen Sie Verbindungszeichenfolge lesen.

Also, die Lösung sein nur die web.config halten wie es ist, und ändern Sie die Zeile, wo Sie Speicherkonto zu erhalten:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]); 

Oder Ihre Linie für Verbindungszeichenfolgen halten aber web.config ändern :

<configuration> 
    <connectionStrings> 
     <add name="StorageConnectionString" 
      connectionString="DefaultEndpointsProtocol=https;AccountName=account- name;AccountKey=account-key" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
</configuration> 

und natürlich müssen Sie Ihre realen Werte für Cloud Storage-Konto und Lagerung Kontoschlüssel setzen (account-name wird einfach nie funktionieren).

3

Dies ist mehr schlechte Dokumentation von Azure, der Artikel sagt Ihnen tatsächlich, eine AppSetting zu erstellen und dann sagt Ihnen der Code, einen ConnectionString abzurufen.

Die alternative Lösung ist, die Details als Connectionstring zu speichern und den Code lassen wie es ist:

<add name="StorageConnectionString" connectionString="DefaultEndpointsProtocol=https;AccountName=your-account;AccountKey=your-key" />