2014-09-05 2 views
10

Я пытаюсь подключить сайт Azure к Azure blob (где я намерен разместить некоторые файлы в контейнере, а затем захватить их с моего сайта).Подключение Azure Blob с Azure Website

Я начал с этим уроком: 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). В папке «Представления» есть также файл 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 как может обеспечить некоторую полезную информацию. Несколько вещей, чтобы попробовать ... Во-первых, ваш второй пример пытается найти ConnectionString с именем «DefaultEndpointsProtocol ....», когда это просто значение. Во-вторых, просто добавьте строку учетной записи хранилища напрямую, то есть CloudStorageAccount storageAccount = CloudStorageAccount.Parse («DefaultEndpointsProtocol = https; AccountName = имя учетной записи; AccountKey = account-key»]); – SeanCocteau

ответ

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, вам необходимо прочитать Connection String.

Таким образом, решение будет просто держать 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> 

и, конечно, вы должны поставить свои реальные значения для учетной записи Cloud Storage и ключ учетной записи хранения (account-name просто никогда не работать).

3

Это более плохая документация от Azure, в статье действительно говорится, что вы создаете AppSetting, а затем код подскажет вам получить ConnectionString.

Альтернативное исправление для хранения деталей как ConnectionString и оставить код как:

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