Verbinden mit der Media Services v3-API – .NET
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
- Erstellen Sie ein Media Services-Konto. Merken Sie sich den Namen der Ressourcengruppe und den Namen des Media Services-Kontos.
- Installieren Sie ein Tool, das Sie für die .NET-Entwicklung verwenden möchten. Die Schritte in diesem Artikel zeigen, wie Sie die Visual Studio 2019 Community Edition verwenden. Informationen zu Visual Studio Code finden Sie unter Arbeiten mit C# . Sie können auch einen anderen Code-Editor verwenden.
Wichtig
Informieren Sie sich über die Namenskonventionen.
Erstellen einer Konsolenanwendung
- Starten Sie Visual Studio.
- Klicken Sie im Menü Datei auf Neu>Projekt.
- 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
- Klicken Sie in Visual Studio auf Tools>NuGet-Paket-Manager>NuGet-Manager-Konsole.
- 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
- Wechseln Sie Allgemein>Textdatei.
- Benennen Sie die Datei „appsettings.json“.
- 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.
- Fügen Sie eine neue .cs-Klasse zu Ihrem Projekt hinzu. Vergeben Sie den Namen
ConfigWrapper
. - 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.
- Öffnen Sie
Program.cs
. - 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:
- Q & A
-
Stack Overflow. Markieren Sie Fragen mit
azure-media-services
. - @MSFTAzureMedia oder verwenden Sie @AzureSupport , um Support anzufordern.
- Öffnen Sie ein Supportticket über die Azure-Portal.