Фон:
У меня есть приложение Azure с одной веб-ролью, которая представляет собой приложение ASP.NET (C #), которое использует приложение для построения диаграмм для отображения результатов вычислений. Приложению для построения графиков требуется XML-файл в качестве входных данных. Чтобы получить доступ к этому XML-файлу (указанному в JavaScript), я использую XDocument и связанные классы для управления файлом, затем сохраняю его, управление диаграммой загружается при обновлении страницы.
Ошибка:
При попытке работать (GetPermissions, Create, Create if not exists и т. Д.) С объектом контейнера я получаю следующую ошибку:
Серверу не удалось подтвердить запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись.
Я также пробовал заранее создать контейнер с помощью SpaceBlock, похоже, это не повлияло на результат.
Код:
Вот функция, которую я вызываю для Page_Load. Ошибка отображается в строке, выделенной жирным шрифтом (GetPermissions):
private void InitializeStorage()
{
if (storageInitialized)
{
return;
}
lock (gate)
{
if (storageInitialized)
{
return;
}
try
{
CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
{
configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
});
// read account configuration settings
var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
// create blob container for images
blobStorage = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobStorage.GetContainerReference("xml");
// configure container for public access
**var permissions = container.GetPermissions();**
permissions.PublicAccess = BlobContainerPublicAccessType.Container;
container.SetPermissions(permissions);
CloudBlob opcBlob = container.GetBlobReference("OptionPriceChart.xml");
opcBlob.DownloadToFile("opcLocal.xml");
}
catch (WebException)
{
throw new WebException("Storage services initialization failure. "
+ "Check your storage account configuration settings. If running locally, "
+ "ensure that the Development Storage service is running.");
}
storageInitialized = true;
}
}