Поделиться через


Подключение к API Служб мультимедиа версии 3 — .NET

Логотип Служб мультимедиа версии 3


Предупреждение

Поддержка Служб мультимедиа Azure будет прекращена 30 июня 2024 г. Дополнительные сведения см. в руководстве по прекращению поддержки AMS.

В этой статье объясняется, как подключиться к пакету SDK для .NET Служб мультимедиа Azure версии 3 с помощью метода входа субъекта-службы.

Предварительные требования

  • Создание учетной записи Служб мультимедиа. Обязательно запомните имя группы ресурсов и имя учетной записи Служб мультимедиа.
  • Установите инструмент, который вы хотите использовать для разработки .NET. В этой статье показано, как использовать Visual Studio 2019 Community Edition. Вы можете использовать Visual Studio Code (см. раздел Работа с C#). Или можно использовать другой редактор кода.

Важно!

Проверьте соглашения об именовании.

Создание консольного приложение

  1. Запустите среду Visual Studio.
  2. В меню Файл выберите пункт Создать>Проект.
  3. Создайте консольное приложение .NET Core.

Пример приложения в этом разделе ориентирован на netcoreapp2.0. В коде используется метод "async main", который доступен начиная с версии C# 7.1. Дополнительные сведения см. в этом блоге.

Добавление необходимых пакетов и сборок NuGet

  1. В Visual Studio выберите Сервис>Диспетчер пакетов NuGet>Консоль диспетчера NuGet.
  2. В окне консоли диспетчера пакетов с помощью команды Install-Package добавьте указанные ниже пакеты NuGet. Например, Install-Package Microsoft.Azure.Management.Media.
Пакет Описание
Microsoft.Azure.Management.Media Пакет SDK для Служб мультимедиа Azure.
Чтобы использовать последнюю версию пакета служб мультимедиа Azure, проверьте Microsoft.Azure.Management.Media.

Другие необходимые сборки

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

Создание и настройка файла параметров приложения

Создание файла appsettings.json

  1. Выберите Общие>Текстовый файл.
  2. Присвойте ему имя "appsettings.json".
  3. Установите для свойства "Копировать в выходной каталог" JSON-файла значение "Копировать более новые" (чтобы у приложения был доступ к нему при публикации).

Настройка значений в файле appsettings.json

Выполните команду az ams account sp create, как описано в разделе об API доступа. Команда возвращает код JSON, который необходимо скопировать в файл appsettings.json.

Добавление файла конфигурации

Для удобства добавьте файл конфигурации, который отвечает за чтение значений из appsettings.json.

  1. Добавьте в проект новый класс .cs. Присвойте обработчику события имя ConfigWrapper.
  2. Вставьте в этот файл следующий код (в этом примере предполагается, что у вас пространство имен 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"]; }
        }
    }
}

Подключение к клиенту .NET

Чтобы начать использование API Служб мультимедиа с .NET, создайте объект AzureMediaServicesClient. Чтобы создать объект, введите учетные данные, необходимые клиенту для подключения к Azure с помощью Azure AD. В коде ниже функция GetCredentialsAsync создает объект ServiceClientCredentials с использованием учетных данных, предоставленных в локальном файле конфигурации.

  1. Откройте среду Program.cs.
  2. Вставьте следующий код:
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,
            };
        }

    }
}

Справка и поддержка

Вы можете обратиться к Службам мультимедиа с вопросами или следить за нашими обновлениями одним из следующих способов: