Подключение 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" />