Ligar à API v3 dos Serviços de Multimédia - .NET

Logótipo dos Serviços de Multimédia v3


Aviso

Os Serviços de Multimédia do Azure serão descontinuados a 30 de junho de 2024. Para obter mais informações, consulte o Guia de Descontinuação do AMS.

Este artigo mostra-lhe como ligar ao SDK .NET dos Serviços de Multimédia do Azure v3 com o método de início de sessão do principal de serviço.

Pré-requisitos

Criar uma aplicação de consola

  1. Inicie o Visual Studio.
  2. No menu Ficheiro , clique em Novo>Projeto.
  3. Crie uma aplicação de consola .NET Core .

A aplicação de exemplo neste tópico destina-se netcoreapp2.0a . O código utiliza "assíncrono principal", que está disponível a partir de C# 7.1. Consulte este blogue para obter mais detalhes.

Adicionar pacotes/assemblagens NuGet necessários

  1. No Visual Studio, selecione Ferramentas>NuGet Gestor de> PacotesNuGet Consola do Gestor de NuGet.
  2. Na janela Consola do Gestor de Pacotes , utilize Install-Package o comando para adicionar os seguintes pacotes NuGet. Por exemplo, Install-Package Microsoft.Azure.Management.Media.
Pacote Descrição
Microsoft.Azure.Management.Media SDK dos Serviços de Multimédia do Azure.
Para se certificar de que está a utilizar o pacote mais recente dos Serviços de Multimédia do Azure, consulte Microsoft.Azure.Management.Media.

Outras assemblagens necessárias

  • Azure.Storage.Blobs
  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.Configuration.EnvironmentVariables
  • Microsoft.Extensions.Configuration.Json
  • Microsoft.Rest.ClientRuntime.Azure.Authentication

Criar e configurar o ficheiro de definições da aplicação

Criar appsettings.json

  1. Aceda aFicheiro de TextoGeral>.
  2. Dê-lhe o nome "appsettings.json".
  3. Defina a propriedade "Copiar para o Diretório de Saída" do ficheiro .json como "Copiar se for mais recente" (para que a aplicação possa aceder à mesma quando publicada).

Definir valores no appsettings.json

Execute o az ams account sp create comando conforme descrito nas APIs de acesso. O comando devolve json que deve copiar para o seu "appsettings.json".

Adicionar o ficheiro de configuração

Por conveniência, adicione um ficheiro de configuração responsável pela leitura de valores de "appsettings.json".

  1. Adicione uma nova classe .cs ao seu projeto. Dê-lhe o nome ConfigWrapper.
  2. Cole o seguinte código neste ficheiro (este exemplo pressupõe que tem o espaço de nomes ).ConsoleApp1
using System;

using Microsoft.Extensions.Configuration;

namespace ConsoleApp1
{
    public class ConfigWrapper
    {
        private readonly IConfiguration _config;

        public ConfigWrapper(IConfiguration config)
        {
            _config = config;
        }

        public string SubscriptionId
        {
            get { return _config["SubscriptionId"]; }
        }

        public string ResourceGroup
        {
            get { return _config["ResourceGroup"]; }
        }

        public string AccountName
        {
            get { return _config["AccountName"]; }
        }

        public string AadTenantId
        {
            get { return _config["AadTenantId"]; }
        }

        public string AadClientId
        {
            get { return _config["AadClientId"]; }
        }

        public string AadSecret
        {
            get { return _config["AadSecret"]; }
        }

        public Uri ArmAadAudience
        {
            get { return new Uri(_config["ArmAadAudience"]); }
        }

        public Uri AadEndpoint
        {
            get { return new Uri(_config["AadEndpoint"]); }
        }

        public Uri ArmEndpoint
        {
            get { return new Uri(_config["ArmEndpoint"]); }
        }

        public string Location
        {
            get { return _config["Location"]; }
        }
    }
}

Ligar ao cliente .NET

Para começar a utilizar as APIs dos Serviços de Multimédia com o .NET, tem de criar um objeto AzureMediaServicesClient. Para criar o objeto, tem de fornecer as credenciais necessárias para o cliente se ligar ao Azure com o Azure AD. No código abaixo, a função GetCredentialsAsync cria o objeto ServiceClientCredentials com base nas credenciais fornecidas no ficheiro de configuração local.

  1. Abra Program.cs.
  2. Cole o seguinte código:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

using Microsoft.Azure.Management.Media;
using Microsoft.Azure.Management.Media.Models;
using Microsoft.Extensions.Configuration;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Rest;
using Microsoft.Rest.Azure.Authentication;

namespace ConsoleApp1
{
    class Program
    {
        public static async Task Main(string[] args)
        {

            ConfigWrapper config = new ConfigWrapper(new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddEnvironmentVariables()
                .Build());

            try
            {
                IAzureMediaServicesClient client = await CreateMediaServicesClientAsync(config);
                Console.WriteLine("connected");
            }
            catch (Exception exception)
            {
                if (exception.Source.Contains("ActiveDirectory"))
                {
                    Console.Error.WriteLine("TIP: Make sure that you have filled out the appsettings.json file before running this sample.");
                }

                Console.Error.WriteLine($"{exception.Message}");


                if (exception.GetBaseException() is ErrorResponseException apiException)
                {
                    Console.Error.WriteLine(
                        $"ERROR: API call failed with error code '{apiException.Body.Error.Code}' and message '{apiException.Body.Error.Message}'.");
                }
            }

            Console.WriteLine("Press Enter to continue.");
            Console.ReadLine();
        }

        private static async Task<ServiceClientCredentials> GetCredentialsAsync(ConfigWrapper config)
        {
            // Use ApplicationTokenProvider.LoginSilentWithCertificateAsync or UserTokenProvider.LoginSilentAsync to get a token using service principal with certificate
            //// ClientAssertionCertificate
            //// ApplicationTokenProvider.LoginSilentWithCertificateAsync

            // Use ApplicationTokenProvider.LoginSilentAsync to get a token using a service principal with symmetric key
            ClientCredential clientCredential = new ClientCredential(config.AadClientId, config.AadSecret);
            return await ApplicationTokenProvider.LoginSilentAsync(config.AadTenantId, clientCredential, ActiveDirectoryServiceSettings.Azure);
        }

        private static async Task<IAzureMediaServicesClient> CreateMediaServicesClientAsync(ConfigWrapper config)
        {
            var credentials = await GetCredentialsAsync(config);

            return new AzureMediaServicesClient(config.ArmEndpoint, credentials)
            {
                SubscriptionId = config.SubscriptionId,
            };
        }

    }
}

Obter ajuda e suporte

Pode contactar os Serviços de Multimédia com perguntas ou seguir as nossas atualizações através de um dos seguintes métodos: