Verbinden mit der Media Services v3-API – .NET

Media Services-Logo v3


Warnung

Azure Media Services wird am 30. Juni 2024 eingestellt. Weitere Informationen finden Sie im Leitfaden zur Einstellung von AMS.

Dieser Artikel zeigt Ihnen, wie Sie mit der Methode der Dienstprinzipalanmeldung eine Verbindung zum Azure Media Services v3.NET SDK herstellen.

Voraussetzungen

Wichtig

Informieren Sie sich über die Namenskonventionen.

Erstellen einer Konsolenanwendung

  1. Starten Sie Visual Studio.
  2. Klicken Sie im Menü Datei auf Neu>Projekt.
  3. Erstellen Sie eine .NET Core-Konsolenanwendung.

Die Beispiel-App in diesem Thema ist auf netcoreapp2.0 ausgerichtet. Der Code verwendet 'async main', der ab C# 7.1 verfügbar ist. Weitere Einzelheiten hierzu finden Sie in diesem Blog.

Hinzufügen erforderlicher NuGet-Pakete/Assemblys

  1. Klicken Sie in Visual Studio auf Tools>NuGet-Paket-Manager>NuGet-Manager-Konsole.
  2. Verwenden Sie im Fenster Paket-Manager-Konsole den Befehl Install-Package, um die folgenden NuGet-Pakete hinzuzufügen. Beispiel: Install-Package Microsoft.Azure.Management.Media.
Paket BESCHREIBUNG
Microsoft.Azure.Management.Media Azure Media Services SDK
Um sicherzustellen, dass Sie das neueste Azure Media Services-Paket verwenden, überprüfen Sie Microsoft.Azure.Management.Media.

Weitere erforderliche Assemblys

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

Erstellen und Konfigurieren der App-Einstellungsdatei

Erstellen der appsettings.json

  1. Wechseln Sie Allgemein>Textdatei.
  2. Benennen Sie die Datei „appsettings.json“.
  3. Setzen Sie die Eigenschaft „Copy to Output Directory“ der .json-Datei auf „Copy if newer“ (damit die Anwendung bei Veröffentlichung darauf zugreifen kann).

Festlegen der Werte in „appSettings.json“

Führen Sie den Befehl az ams account sp create wie unter Zugreifen auf APIs beschrieben aus. Der Befehl gibt json-Werte zurück, das Sie in Ihre „appsettings.json“ kopieren sollten.

Konfigurationsdatei hinzufügen

Fügen Sie aus Gründen der Übersichtlichkeit eine Konfigurationsdatei hinzu, die für das Lesen von Werten aus „appsettings.json“ zuständig ist.

  1. Fügen Sie eine neue .cs-Klasse zu Ihrem Projekt hinzu. Vergeben Sie den Namen ConfigWrapper.
  2. Fügen Sie den folgenden Code in diese Datei ein (in diesem Beispiel wird davon ausgegangen, dass der Namespace ConsoleApp1 ist).
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"]; }
        }
    }
}

Verbinden mit dem .NET-Client

Um mit der Verwendung von Media Services-APIs in .NET zu beginnen, müssen Sie ein AzureMediaServicesClient-Objekt erstellen. Zum Erstellen des Objekts müssen Sie Anmeldeinformationen bereitstellen, die für den Client zum Herstellen einer Verbindung mit Azure mithilfe von Azure AD erforderlich sind. In dem Code unten erstellt die Funktion „GetCredentialsAsync“ das ServiceClientCredentials-Objekt basierend auf den in der lokalen Konfigurationsdatei angegebenen Anmeldeinformationen.

  1. Öffnen Sie Program.cs.
  2. Fügen Sie folgenden Code ein:
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,
            };
        }

    }
}

Anfordern von Hilfe und Support

Sie können Media Services mit Fragen kontaktieren oder unsere Updates mit einer der folgenden Methoden verfolgen: