共用方式為


連接到媒體服務 v3 API - .NET

媒體服務標誌 v3


警告

Azure 媒體服務將於 2024 年 6 月 30 日淘汰。 如需詳細資訊,請參閱 AMS淘汰指南

本文說明如何使用服務主體登入方法來連線到 Azure 媒體服務 v3 .NET SDK。

Prerequisites

重要事項

檢閱命名慣例

建立主控台應用程式

  1. 啟動 Visual Studio。
  2. 從 [檔案] 功能表,按一下 [新增]>[專案]。
  3. 建立 .NET Core 主控台應用程式。

本主題中的範例應用程式以 netcoreapp2.0 為目標。 該程式碼使用從 C# 7.1 開始提供的「async main」。 如需詳細資訊,請參閱此部落格

新增必要的 NuGet 套件/組件

  1. 在 Visual Studio 中,選取 [工具]> [NuGet 套件管理員]> [NuGet 管理員主控台]。
  2. 在 [套件管理員主控台] 視窗中,使用 Install-Package 命令來新增下列 NuGet 套件。 例如:Install-Package Microsoft.Azure.Management.Media
Package 描述
Microsoft.Azure.Management.Media Azure 媒體服務 SDK。
若要確定您使用的是最新的 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 中設定值

按照存取 API 的說明執行 az ams account sp create 命令。 此命令會傳回您應該複製到「appsettings.json」的 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 AD 連線至 Azure。 在下列程式碼中,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,
            };
        }

    }
}

取得說明及支援

您可以連絡媒體服務並詢問問題,或依照下列其中一種方法追蹤我們的更新: