问题描述
我正在创建一个使用 azure 媒体服务的应用程序。所以为了管理内容,我正在尝试将资产上传到托管方式,如下所示
这是我用来创建输入资产 containerPath
之类的代码 company1/section1
private async Task<Asset> CreateInputAssetAsync(string assetName,string containerPath,IFormFile filetoUpload)
{
var asset = await _azureMediaServicesClient.Assets.CreateOrUpdateAsync(_appSettings.AzureMediaConfig.ResourceGroup,_appSettings.AzureMediaConfig.AccountName,assetName,new Asset());
var response = await _azureMediaServicesClient.Assets.ListContainerSasAsync(
_appSettings.AzureMediaConfig.ResourceGroup,permissions: AssetContainerPermission.ReadWrite,expiryTime: DateTime.UtcNow.AddHours(4).ToUniversalTime());
var sasUri = new Uri(response.AssetContainerSasUrls.First());
var container = new BlobContainerClient(sasUri);
var blob = container.GetBlobClient(containerPath);
await blob.UploadAsync(filetoUpload.OpenReadStream());
return asset;
}
private async Task<Asset> CreateOutputAssetAsync(string containerPath,string assetName)
{
var outputAsset = await _azureMediaServicesClient.Assets.GetAsync(_appSettings.AzureMediaConfig.ResourceGroup,assetName);
var asset = new Asset { Container = containerPath };
var outputAssetName = assetName;
if (outputAsset != null)
{
var uniqueness = $"-{Guid.NewGuid():N}";
outputAssetName += uniqueness;
}
return await _azureMediaServicesClient.Assets.CreateOrUpdateAsync(_appSettings.AzureMediaConfig.ResourceGroup,outputAssetName,asset);
}
但是当代码运行 azure SDK 时会抛出 BadRequest 异常
我的代码中缺少的部分是什么
问候
解决方法
更新
如果您想使用其他存储帐户,您需要在门户网站上Add secondary storage account
。
阅读 .Net SDK 后,CreateOrUpdateAsync
将创建一个新容器。所以我们只要使用现有的容器就可以解决问题。
测试步骤。
-
在门户上创建新容器
input
和output
。 -
如下更改您的代码。
Asset newasset= new Asset(); newasset.Container = "input"; newasset.StorageAccountName = "your storage name"; Asset asset = await client.Assets.CreateOrUpdateAsync(resourceGroupName,accountName,assetName,newasset);
测试结果。