Conexión a la API de Media Services v3: .NET

Logotipo de Media Services v3


Advertencia

Azure Media Services se retirará el 30 de junio de 2024. Para obtener más información, consulte la Guía de retirada de AMS.

En este artículo se muestra cómo conectar con el SDK de .NET de Azure Media Services v3 con el método de inicio de sesión de la entidad de servicio.

Prerrequisitos

Importante

Revise las convenciones de nomenclatura.

Creación de una aplicación de consola

  1. Inicie Visual Studio.
  2. En el menú Archivo, haga clic en Nuevo>Proyecto.
  3. Cree una aplicación de consola de .NET Core.

La aplicación de ejemplo de este tema tiene netcoreapp2.0 como destino. El código usa "async main", disponible a partir de C# 7.1. Consulte este blog para más información.

Incorporación de los paquetes y ensamblados de NuGet requeridos

  1. En Visual Studio, seleccione Herramientas>Administrador de paquetes NuGet>Consola del Administrador de paquetes.
  2. En la ventana Consola del Administrador de paquetes, use el comando Install-Package para agregar los siguientes paquetes NuGet. Por ejemplo, Install-Package Microsoft.Azure.Management.Media.
Paquete Descripción
Microsoft.Azure.Management.Media SDK de Azure Media Services.
Para asegurarse de que usa el paquete más reciente de Azure Media Services, consulte Microsoft.Azure.Management.Media.

Otros ensamblados necesarios

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

Creación y configuración del archivo de configuración de la aplicación

Creación de appsettings.json

  1. Vaya a General>Archivo de texto.
  2. Dele el nombre "appsettings.json".
  3. Establezca la propiedad "Copy to Output Directory" del archivo .json en "Copy if newer" (para que la aplicación pueda acceder a ella al publicar).

Establecimiento de los valores en appsettings.json

Ejecute el comando az ams account sp create como se describe en el artículo de acceso a las API. El comando devuelve el json que se debe copiar en "appsettings.json".

Adición de archivo de configuración

Para mayor comodidad, agregue un archivo de configuración que se encargue de leer los valores de "appsettings.json".

  1. Agregue una nueva clase .cs al proyecto. Denomínelo ConfigWrapper.
  2. Pegue el siguiente código en este archivo (en este ejemplo se supone que tiene el espacio de nombres 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"]; }
        }
    }
}

Conexión con el cliente de .NET

Para empezar a usar las API de Media Services con. NET, debe crear un objeto AzureMediaServicesClient. Para crear el objeto, debe proporcionar las credenciales necesarias para que el cliente se conecte a Azure mediante Azure AD. En el código siguiente, la función GetCredentialsAsync crea el objeto ServiceClientCredentials basándose en las credenciales proporcionadas en el archivo de configuración local.

  1. Abra Program.cs.
  2. Pegue el código siguiente:
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,
            };
        }

    }
}

Obtener ayuda y soporte técnico

Puede ponerse en contacto con Media Services con preguntas o seguir nuestras actualizaciones mediante uno de los métodos siguientes: