Se connecter à l’API Media Services v3 - .NET

Logo de Media Services v3


Avertissement

Azure Media Services sera mis hors service le 30 juin 2024. Pour plus d’informations, consultez le Guide de mise hors service AMS.

Cet article explique comment se connecter au kit de développement logiciel (SDK) Node.js Azure Media Services v3 .NET suivant la méthode de connexion au principal du service.

Prérequis

  • Créer un compte Media Services. Veillez à mémoriser le nom du groupe de ressources et le nom du compte Media Services.
  • Installez un outil que vous souhaitez utiliser pour le développement .NET. Les étapes décrites dans cet article montrent comment utiliser Visual Studio 2019 Community Edition. Vous pouvez utiliser Visual Studio Code. Pour cela, consultez Working with C# (Utilisation de C#). Vous pouvez également utiliser un autre éditeur de code.

Important

Examinez les conventions d’appellation.

Création d’une application console

  1. Démarrez Visual Studio.
  2. Dans le menu Fichier, cliquez sur Nouveau>Projet.
  3. Créez une application de console .NET Core.

L’exemple d’application de cette rubrique cible netcoreapp2.0. Le code utilise « async main », qui est disponible à partir de C# 7.1. Voir le blog pour plus de détails.

Ajouter les packages/assemblys NuGet exigés

  1. Dans Visual Studio, sélectionnez Outils>Gestionnaire de package NuGet>Console du gestionnaire de package NuGet.
  2. Dans la fenêtre de la console du Gestionnaire de package, exécutez la commande Install-Package pour ajouter les packages NuGet suivants. Par exemple : Install-Package Microsoft.Azure.Management.Media.
Package Description
Microsoft.Azure.Management.Media Kit SDK Azure Media Services.
Pour vérifier que vous utilisez le dernier package Azure Media Services, exécutez Microsoft.Azure.Management.Media.

Autres assemblys requis

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

Créer et configurer le fichier des paramètres de l’application

Créer appsettings.json

  1. Accédez go Général>Fichier texte.
  2. Nommez-le « appsettings.json ».
  3. Définissez la propriété « Copier dans le répertoire de sortie » du fichier .json sur « Copier si plus récent » (pour que l’application puisse y accéder lors de la publication).

Définir des valeurs dans le fichier appsettings.json

Exécutez la commande az ams account sp create comme décrit dans Accéder aux API. La commande renvoie le fichier json que vous devez copier dans votre fichier appsettings.json.

Ajouter un fichier de configuration

Pour plus de commodité, ajoutez un fichier de configuration chargé de lire les valeurs à partir du fichier appsettings.json.

  1. Ajoutez une nouvelle classe .cs à votre projet. Nommez-le ConfigWrapper.
  2. Collez le code suivant dans ce fichier (cet exemple suppose que l’espace de noms est 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"]; }
        }
    }
}

Se connecter au client .NET

Pour commencer à utiliser les API Media Services avec .NET, vous devez créer un objet AzureMediaServicesClient. Pour créer l’objet, vous devez fournir les informations d’identification nécessaires pour que le client puisse se connecter à Azure à l’aide d’Azure AD. Dans le code ci-dessous, la fonction GetCredentialsAsync crée l’objet ServiceClientCredentials basé sur les informations d’identification fournies dans le fichier de configuration local.

  1. Ouvrez Program.cs.
  2. Collez le code suivant :
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,
            };
        }

    }
}

Obtenir de l’aide et du support

Vous pouvez contacter Media Services pour vous poser des questions ou suivre nos mises à jour en suivant l’une des méthodes suivantes :