我可以在Azure文件存储中访问根文件夹吗?

时间:2016-04-27 09:18:33

标签: azure-storage

我从Silverlight访问Azure文件存储,我需要在存储的根目录上传/创建一个crossdomain.xml文件:

https://[account].file.core.windows.net/crossdomain.xml

在这上看到了很多关于blob的例子,但我似乎无法为文件存储创建$ root(不添加文件共享)。

Silverlight需要根级别的crossdomain.xml才能使用Azure REST API。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

Azure文件存储follows the "share-directory" structure。我不知道Azure文件存储中的任何Root文件夹(我知道跨域和要求),我相信它无法通过文件存储完成。

您可以调用

CloudFileDirectory rootDir = share.getRootDirectoryReference() 

返回共享根目录,但不返回文件存储目录。

为了能够实现您需要的功能,如果没有需要文件存储的特定要求,我建议您切换到Blob存储。

答案 1 :(得分:1)

评论部分不允许那么多字符。因此,我发布这个作为答案,实际上不是解决方案:)。

以下是我想分享的经验。

我曾尝试将一个跨域文件添加到根目录中,但无法成功。代码如下:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(getConnectionString());

CloudFileClient client = storageAccount.CreateCloudFileClient();
CloudFileShare share = client.GetShareReference(shareName);
CloudFileDirectory rootDir = share.GetRootDirectoryReference();

var crossDomainFile = share.GetRootDirectoryReference().GetFileReference("crossdomain.xml");

if (!crossDomainFile.Exists())
{
    crossDomainFile.UploadText(getCrossDomainXmlContent());
    Console.WriteLine("crossDomainFile.StorageUri:" + crossDomainFile.StorageUri.PrimaryUri);
}

share.GetRootDirectoryReference()。GetFileReference(“crossdomain.xml”),它为您提供此地址: https://[account].file.core.windows.net/<share名称&gt; /crossdomain.xml。

对于Silverlight或Flash客户端,该文件必须位于https://[account].file.core.windows.net/crossdomain.xml

看来,使用blob存储而不是文件是一个更好的选择。

通过提供类似https://[account].file.core.windows.net/crossdomain.xml的URI来创建云文件对象也是无用的。当您调用UploadText方法(例如:crossDomainFile.UploadText(getCrossDomainXmlContent())时,您将收到400 - 错误请求错误。