Nawiązywanie połączenia z interfejsem API usługi Media Services w wersji 3 — .NET
Ostrzeżenie
Usługa Azure Media Services zostanie wycofana 30 czerwca 2024 r. Aby uzyskać więcej informacji, zobacz Przewodnik po wycofaniu usługi AMS.
W tym artykule pokazano, jak nawiązać połączenie z zestawem .NET SDK usługi Azure Media Services w wersji 3 przy użyciu metody logowania jednostki usługi.
Wymagania wstępne
- Utwórz konto usługi Media Services. Pamiętaj o nazwie grupy zasobów i nazwie konta usługi Media Services
- Zainstaluj narzędzie, którego chcesz użyć do programowania na platformie .NET. Kroki opisane w tym artykule pokazują, jak używać programu Visual Studio 2019 Community Edition. Możesz użyć Visual Studio Code, zobacz Praca z językiem C#. Możesz też użyć innego edytora kodu.
Ważne
Przejrzyj konwencje nazewnictwa.
Tworzenie aplikacji konsolowej
- Uruchom program Visual Studio.
- W menu Plik kliknij pozycję Nowy>projekt.
- Utwórz aplikację konsolową platformy .NET Core .
Przykładowa aplikacja w tym temacie jest przeznaczona dla elementu netcoreapp2.0
. Kod używa "async main", który jest dostępny od języka C# 7.1. Aby uzyskać więcej informacji, zobacz ten blog .
Dodawanie wymaganych pakietów NuGet/zestawów
- W programie Visual Studio wybierz pozycję Narzędzia>Menedżer pakietów NuGetKonsola menedżera> pakietów NuGet.
- W oknie Konsola menedżera pakietów użyj
Install-Package
polecenia , aby dodać następujące pakiety NuGet. Na przykładInstall-Package Microsoft.Azure.Management.Media
.
Pakiet | Opis |
---|---|
Microsoft.Azure.Management.Media |
Zestaw SDK usługi Azure Media Services. Aby upewnić się, że używasz najnowszego pakietu usługi Azure Media Services, zobacz Microsoft.Azure.Management.Media. |
Inne wymagane zestawy
- Azure.Storage.Blobs
- Microsoft.Extensions.Configuration
- Microsoft.Extensions.Configuration.EnvironmentVariables
- Microsoft.Extensions.Configuration.Json
- Microsoft.Rest.ClientRuntime.Azure.Authentication
Tworzenie i konfigurowanie pliku ustawień aplikacji
Tworzenie appsettings.json
- Przejdź do pozycji Ogólny>plik tekstowy.
- Nadaj mu nazwę "appsettings.json".
- Ustaw właściwość "Kopiuj do katalogu wyjściowego" pliku .json na wartość "Kopiuj, jeśli jest nowsza" (aby aplikacja mogła uzyskać do niej dostęp po opublikowaniu).
Ustawianie wartości w appsettings.json
Uruchom polecenie zgodnie z opisem az ams account sp create
w temacie Access APIs (Interfejsy API dostępu). Polecenie zwraca kod JSON, który należy skopiować do "appsettings.json".
Dodawanie pliku konfiguracji
Dla wygody dodaj plik konfiguracji odpowiedzialny za odczytywanie wartości z "appsettings.json".
- Dodaj nową klasę .cs do projektu. Nadaj jej nazwę
ConfigWrapper
. - Wklej następujący kod w tym pliku (w tym przykładzie przyjęto założenie, że masz przestrzeń nazw o
ConsoleApp1
nazwie ).
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"]; }
}
}
}
Nawiązywanie połączenia z klientem platformy .NET
Aby rozpocząć korzystanie z interfejsów API usługi Media Services na platformie .NET, należy utworzyć obiekt AzureMediaServicesClient. Aby utworzyć obiekt, należy podać poświadczenia wymagane do nawiązania połączenia z platformą Azure przez klienta przy użyciu usługi Azure AD. W poniższym kodzie funkcja GetCredentialsAsync tworzy obiekt ServiceClientCredentials na podstawie poświadczeń podanych w lokalnym pliku konfiguracji.
- Otwórz plik
Program.cs
. - Wklej następujący kod:
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,
};
}
}
}
Uzyskiwanie pomocy i obsługi technicznej
Możesz skontaktować się z usługą Media Services z pytaniami lub postępować zgodnie z naszymi aktualizacjami, korzystając z jednej z następujących metod:
- Q & A
-
Stack Overflow. Tagowanie pytań przy użyciu polecenia
azure-media-services
. - @MSFTAzureMedia lub użyj @AzureSupport , aby poprosić o pomoc techniczną.
- Otwórz bilet pomocy technicznej za pośrednictwem Azure Portal.