我正在使用Azure媒体服务。我试图通过创建一个定位器获取SAS,然后获取它的baseURI属性。我这样做的SAS是:
https://rfsstorage.blob.core.windows.net/asset-02b45419-74fd-48cc-bdb8-dd66e0d88055
但那真的是SAS吗?或者是别的什么?它肯定不适用于我从互联网上借用SAS的其他代码。 以下是我用来获取SAS的几行代码:
Public Sub OtainSAS(ByVal Filename As String)
Dim mediaServicesAccountName As String = ConfigurationManager.AppSettings("accountname")
Dim mediaServicesAccountKey As String = ConfigurationManager.AppSettings("accountkey")
Dim mediaCloud As New CloudMediaContext(mediaServicesAccountName, mediaServicesAccountKey)
Dim assetOptions As New AssetCreationOptions()
Dim asset = mediaCloud.Assets.Create(Filename, assetOptions)
Dim assetFile = asset.AssetFiles.Create(Filename)
Dim accessPolicy = mediaCloud.AccessPolicies.Create(Filename, TimeSpan.FromDays(3), AccessPermissions.Write Or AccessPermissions.List)
Dim locator As ILocator
locator = mediaCloud.Locators.CreateLocator(LocatorType.Sas, asset, accessPolicy)
gSasURL = locator.BaseUri
locator.Delete()
accessPolicy.Delete()
End Sub
感谢。
答案 0 :(得分:1)
上面的链接肯定不是SAS。如果您在此处阅读定位器文档:http://msdn.microsoft.com/en-us/library/windowsazure/hh974308.aspx#create_a_locator,您会注意到BaseUri
定义为
提供商店/服务/容器的定位器的一部分 有关资产的信息。 (例如,Dns主机名 http://someservice.cloudapp.net)
还有另一个名为ContentAccessComponent
的属性,它作为定位器的一部分返回并包含SAS。所以在你的代码中你会这样做:
uploadSasUrl = locator.BaseUri & 'File Name' & locator.ContentAccessComponent
基本上你将连接BaseUri,正在上传的文件和ContentAccessComponent。试一试。
此外,我注意到,一旦获得定位器,您将删除访问策略。我认为你需要保持访问策略,直到blob上传为止。