背景:
我有一个带有一个 Web 角色的 Azure 应用程序,它是一个 ASP.NET 应用程序 (C#),它使用图表应用程序来显示计算结果。图表应用程序需要一个 XML 文件作为输入。为了访问这个 XML 文件(在 JavaScript 中引用),我使用 XDocument 和相关类来操作文件,然后保存它,在页面刷新时加载图表控件。
错误:
尝试对容器对象进行操作(GetPermissions、Create、Create if doesn't exist 等)时,出现以下错误:
服务器未能验证请求。确保 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;
}
}