背景:
グラフ作成アプリケーションを使用して計算結果を表示するASP.NETアプリケーション(C#)という1つのWebロールを持つAzureアプリケーションがあります。チャート作成アプリケーションには、入力としてXMLファイルが必要です。このXMLファイル(JavaScriptで参照)にアクセスするために、XDocumentおよび関連するクラスを使用してファイルを操作し、保存します。グラフコントロールはページの更新時に読み込まれます。
エラー:
コンテナオブジェクトを操作(GetPermissions、Create、Create if not presentなど)しようとすると、次のエラーが発生します。
サーバーはリクエストの認証に失敗しました。Authorizationヘッダーの値が署名を含めて正しく形成されていることを確認してください。
また、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;
}
}