我从Silverlight访问Azure文件存储,我需要在存储的根目录上传/创建一个crossdomain.xml文件:
https://[account].file.core.windows.net/crossdomain.xml
在这上看到了很多关于blob的例子,但我似乎无法为文件存储创建$ root(不添加文件共享)。
Silverlight需要根级别的crossdomain.xml才能使用Azure REST API。
有什么想法吗?
答案 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 - 错误请求错误。