Reputation: 2871
I'm creating an application that uses azure media service. so in order to manage content, I'm trying to upload assets to managed way as below
This was the code I used to create input asset containerPath
something like 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, _appSettings.AzureMediaConfig.AccountName,
assetName,
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;
}
so the creating output asset code
private async Task<Asset> CreateOutputAssetAsync(string containerPath, string assetName)
{
var outputAsset = await _azureMediaServicesClient.Assets.GetAsync(_appSettings.AzureMediaConfig.ResourceGroup, _appSettings.AzureMediaConfig.AccountName, 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, _appSettings.AzureMediaConfig.AccountName, outputAssetName, asset);
}
But when code runs azure SDK throws an BadRequest exception
What was the missing part in my code
Regards
Upvotes: 1
Views: 344
Reputation: 22082
UPDATE
If your want use other storage account, you need to Add secondary storage account
on portal.
After read .Net SDK, CreateOrUpdateAsync
will create a new container. So we just use existed container will solve the issue.
Test Step.
Create new container input
and output
on portal.
Change your code as below.
Asset newasset= new Asset();
newasset.Container = "input";
newasset.StorageAccountName = "your storage name";
Asset asset = await client.Assets.CreateOrUpdateAsync(resourceGroupName, accountName, assetName, newasset);
Test Result.
Upvotes: 1