Подключение Azure Blob с веб-сайтом Azure

Я пытаюсь подключить сайт Azure к блоку 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). В папке "Представления" есть также файл 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);

Когда я пытаюсь запустить решение, я получаю следующую ошибку:

введите описание изображения здесь

Я также попытался прямо поместить значение StorageConnectionString (с моим именем и ключом) вместо ссылки на него в следующем выражении:

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

Я все равно получаю ту же ошибку. Кажется, я ничего не могу найти в Интернете. Любые идеи?

Спасибо!

Ответ 1

У вас есть фундаментальная ошибка в вашем коде.

Сначала вы устанавливаете 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>

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

Ответ 2

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

Альтернативное исправление заключается в том, чтобы сохранить детали как ConnectionString и оставить код как есть:

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