2014-09-05 187 views
10

我試圖將Azure網站連接到Azure blob(我打算在容器中託管一些文件,然後從我的網站抓取它們)。將Azure Blob與Azure網站連接

我開始了這個教程: http://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-get-started/

我部署了我的網站,然後開始按照本教程: http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/#setup-connection-string

由於我使用Azure的網站,我下面的代碼添加到我的web.config文件(位於WebApplication1項目下)。 Views文件夾下還有一個web.config文件,但我沒有修改它。

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

我跟着教程的所有步驟,並安裝相關的NuGet包,然後包括在我Controllers/HomeController.cs文件中的這些命名空間:

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

然後,我添加以下語句在ActionResult Index()方法(默認運行)。

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

當我嘗試和運行解決方案,現在我得到這個錯誤:

enter image description here

我也試過直接把StorageConnectionString的值(用我的帳戶名和密鑰),而不是在以下聲明中引用它:

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

我仍然收到相同的錯誤。我似乎無法在互聯網上找到任何東西。有任何想法嗎?

謝謝!

+0

,如果你提供的InnerException爲能提供一些有用的信息,這可能是有益的。有幾件事要嘗試......首先,你的第二個例子是嘗試搜索一個名爲'DefaultEndpointsProtocol ....'的ConnectionString,當它只是值時。其次,直接添加存儲帳戶字符串,即CloudStorageAccount storageAccount = CloudStorageAccount.Parse(「DefaultEndpointsProtocol = https; AccountName = account-name; AccountKey = account-key」]); – SeanCocteau 2014-09-05 08:30:05

回答

25

您在代碼中存在根本性錯誤。

首先,你設置AppSetting:

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

然後嘗試得到一個連接字符串:

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

這根本不起作用。設置AppSetting時,您需要閱讀AppSetting。當您設置ConnectionString時,您需要閱讀連接字符串。

因此,該解決方案將只保留在web.config原樣,並更改行你在哪裏得到的存儲帳戶:

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

或保留線連接字符串,但更改的web.config :

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

當然,你必須把雲存儲帳戶和存儲帳戶密鑰(account-name根本不會工作)的實際值。

3

這是來自Azure的更糟糕的文檔,文章確實告訴您創建AppSetting,然後代碼告訴您檢索ConnectionString。

的替代解決方法是存儲的細節作爲ConnectionString的,離開代碼是:

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