Подключение к API Служб мультимедиа версии 3 — .NET
Предупреждение
Поддержка Служб мультимедиа Azure будет прекращена 30 июня 2024 г. Дополнительные сведения см. в руководстве по прекращению поддержки AMS.
В этой статье объясняется, как подключиться к пакету SDK для .NET Служб мультимедиа Azure версии 3 с помощью метода входа субъекта-службы.
Предварительные требования
- Создание учетной записи Служб мультимедиа. Обязательно запомните имя группы ресурсов и имя учетной записи Служб мультимедиа.
- Установите инструмент, который вы хотите использовать для разработки .NET. В этой статье показано, как использовать Visual Studio 2019 Community Edition. Вы можете использовать Visual Studio Code (см. раздел Работа с C#). Или можно использовать другой редактор кода.
Важно!
Проверьте соглашения об именовании.
Создание консольного приложение
- Запустите среду Visual Studio.
- В меню Файл выберите пункт Создать>Проект.
- Создайте консольное приложение .NET Core.
Пример приложения в этом разделе ориентирован на netcoreapp2.0
. В коде используется метод "async main", который доступен начиная с версии C# 7.1. Дополнительные сведения см. в этом блоге.
Добавление необходимых пакетов и сборок NuGet
- В Visual Studio выберите Сервис>Диспетчер пакетов NuGet>Консоль диспетчера NuGet.
- В окне консоли диспетчера пакетов с помощью команды
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
- Выберите Общие>Текстовый файл.
- Присвойте ему имя "appsettings.json".
- Установите для свойства "Копировать в выходной каталог" JSON-файла значение "Копировать более новые" (чтобы у приложения был доступ к нему при публикации).
Настройка значений в файле appsettings.json
Выполните команду az ams account sp create
, как описано в разделе об API доступа. Команда возвращает код JSON, который необходимо скопировать в файл appsettings.json.
Добавление файла конфигурации
Для удобства добавьте файл конфигурации, который отвечает за чтение значений из appsettings.json.
- Добавьте в проект новый класс .cs. Присвойте обработчику события имя
ConfigWrapper
. - Вставьте в этот файл следующий код (в этом примере предполагается, что у вас пространство имен
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 с использованием учетных данных, предоставленных в локальном файле конфигурации.
- Откройте среду
Program.cs
. - Вставьте следующий код:
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,
};
}
}
}
Справка и поддержка
Вы можете обратиться к Службам мультимедиа с вопросами или следить за нашими обновлениями одним из следующих способов:
- ВОПРОСЫ И ОТВЕТЫ
-
Stack Overflow. Пометьте вопросы с помощью
azure-media-services
. - @MSFTAzureMedia или используйте @AzureSupport для запроса на поддержку.
- Отправьте запрос в службу поддержки через портал Azure.