Tous les produits
Search
Centre de documentation

Alibaba Cloud SDK:Intégrer le SDK Alibaba Cloud V2.0 pour .NET

Dernière mise à jour :Sep 23, 2026

Intégrez le SDK Alibaba Cloud à votre projet .NET afin de simplifier les appels d'API et de réduire les coûts de maintenance. L'intégration se déroule en trois étapes : installer le SDK, configurer un identifiant d'accès et appeler les opérations d'API.

Prérequis

  • .NET Framework 4.5 ou version ultérieure, ou .NET Standard 2.0 ou version ultérieure.

  • C# 5.0 ou version ultérieure.

Installer le SDK

  1. Connectez-vous au SDK Center et sélectionnez le service dont vous souhaitez utiliser le SDK. Dans cet exemple, le service Short Message Service (SMS) est sélectionné.

  2. Sur la page Short Message Service, puis choisissez C# dans la section All languages. Sous l'onglet Quick Start, récupérez la méthode d'installation du SDK Short Message Service (SMS).image

Remarque

Consultez le code source et les directives d'installation sur GitHub.

Configurer un identifiant d'accès

L'appel aux opérations OpenAPI nécessite des identifiants d'accès tels que AccessKey ou Security Token Service (STS) token. Stockez vos identifiants dans des variables d'environnement pour éviter toute fuite. Pour connaître les bonnes pratiques, consultez la rubrique Utiliser les identifiants d'accès en toute sécurité. Les exemples ci-dessous utilisent les variables d'environnement ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET.

Méthode de configuration sous Linux et macOS

Les exemples suivants utilisent ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET comme noms de variables. Remplacez-les par vos propres noms si nécessaire, par exemple OSS_ACCESS_KEY_ID et OSS_ACCESS_KEY_SECRET.

Exécutez les commandes export suivantes pour définir les variables d'environnement :

Important

Les variables définies avec export sont temporaires et valables uniquement pour la session en cours. Pour les rendre persistantes, ajoutez la commande export à votre fichier de démarrage de shell (tel que ~/.bashrc ou ~/.zshrc).

  • Définissez l'ID AccessKey :

    # Replace yourAccessKeyID with your AccessKey ID.
    export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID
  • Définissez le secret AccessKey :

    # Replace yourAccessKeySecret with your AccessKey secret.
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
  • Vérifiez la configuration.

    Exécutez echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Si la valeur correcte s'affiche, la configuration a réussi.

Méthode de configuration sous Windows

Utiliser l'interface graphique (GUI)

  • Procédure

    Les étapes suivantes décrivent comment définir les variables d'environnement à l'aide de l'interface graphique sous Windows 10.

    Sur votre bureau, cliquez avec le bouton droit sur This PC et choisissez Properties > Advanced system settings > Environment Variables > New sous System variables ou User variables. Ensuite, effectuez la configuration.

    Variable

    Valeur d'exemple

    ID AccessKey

    • Nom de la variable : ALIBABA_CLOUD_ACCESS_KEY_ID

    • Valeur de la variable : yourAccessKeyID

    Secret AccessKey

    • Nom de la variable : ALIBABA_CLOUD_ACCESS_KEY_SECRET

    • Valeur de la variable : yourAccessKeySecret

  • Tester la configuration

    Cliquez sur Start (ou utilisez le raccourci clavier Win+R), cliquez sur Run, saisissez cmd, puis cliquez sur OK (ou appuyez sur Entrée) pour ouvrir l'invite de commandes. Exécutez les commandes echo %ALIBABA_CLOUD_ACCESS_KEY_ID% et echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Si les commandes renvoient l'AccessKey correct, la configuration a réussi.

Utiliser l'invite de commandes (CMD)

  • Procédure

    Ouvrez l'invite de commandes en tant qu'administrateur et exécutez les commandes suivantes pour ajouter de nouvelles variables d'environnement au système.

    setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M
    setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M

    Le paramètre /M indique une variable d'environnement système. Vous pouvez omettre ce paramètre lors de la définition d'une variable d'environnement utilisateur.

  • Tester la configuration

    Cliquez sur Start (ou utilisez le raccourci clavier Win+R), cliquez sur Run, saisissez cmd, puis cliquez sur OK (ou appuyez sur Entrée) pour ouvrir l'invite de commandes. Exécutez les commandes echo %ALIBABA_CLOUD_ACCESS_KEY_ID% et echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Si les commandes renvoient l'AccessKey correct, la configuration a réussi.

Utiliser Windows PowerShell

Dans PowerShell, vous pouvez définir de nouvelles variables d'environnement valables pour toutes les nouvelles sessions :

[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::User)

Pour définir des variables d'environnement pour tous les utilisateurs, vous devez disposer des autorisations d'administrateur :

[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)

Vous pouvez définir des variables d'environnement temporaires valables uniquement pour la session en cours :

$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "yourAccessKeyID"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "yourAccessKeySecret"

Dans PowerShell, exécutez les commandes Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID et Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET. Si les commandes renvoient l'AccessKey correct, la configuration a réussi.

Utiliser le SDK

Cet exemple appelle l'opération SendMessageToGlobe du service Short Message Service (SMS). Pour plus d'informations sur l'opération SendMessageToGlobe, consultez la rubrique SendMessageToGlobe.

1. Initialiser un client de requête

Toutes les requêtes d'API sont envoyées via un objet client. Initialisez le client avant d'appeler toute opération d'API. Plusieurs méthodes d'initialisation sont disponibles. Cet exemple utilise une paire AccessKey. Pour plus d'informations, consultez la rubrique Gérer les identifiants d'accès.

Important
  • Les objets client (tels que les instances Dysmsapi Client) sont thread-safe. Vous n'avez pas besoin de créer une instance pour chaque thread.

  • Évitez de créer fréquemment des objets client avec le mot-clé new, car cela gaspille des ressources et dégrade les performances. Utilisez le modèle singleton pour garantir une seule instance Client par identifiant d'accès et endpoint.

 public static AlibabaCloud.SDK.Dysmsapi20180501.Client CreateClient(){
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // Required, please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID is set.
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // Required, please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_SECRET is set.
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
            };
            config.Endpoint = "dysmsapi.aliyuncs.com";
            return new AlibabaCloud.SDK.Dysmsapi20180501.Client(config);
        }

2. Créer un objet de requête

Chaque opération d'API possède un objet de requête nommé <Nom de l'opération d'API>Request. Par exemple, l'objet de requête pour l'opération SendMessageToGlobe est SendMessageToGlobeRequest. Pour plus d'informations sur les paramètres de l'opération SendMessageToGlobe, consultez la rubrique SendMessageToGlobe.

Remarque

Si une opération d'API ne comporte aucun paramètre de requête, ignorez l'objet de requête. Par exemple, l'opération DescribeCdnSubList ne nécessite aucun paramètre de requête.

// Create request object and set required input parameters
AlibabaCloud.SDK.Dysmsapi20180501.Models.SendMessageToGlobeRequest sendMessageToGlobeRequest = new AlibabaCloud.SDK.Dysmsapi20180501.Models.SendMessageToGlobeRequest
            {   
                // Please replace with the actual recipient number.
                To = "<PHONE_NUMBER>",
                // Please replace with the actual SMS content.
                Message = "<YOUR_MESSAGE>",
            };

3. Envoyer la requête

Appelez l'opération d'API à l'aide de la méthode <Nom de l'opération d'API>WithOptions. Cette méthode prend deux paramètres : l'objet de requête de l'étape précédente et un paramètre d'exécution pour les configurations de délai d'attente et de proxy. Pour plus d'informations, consultez la rubrique Configuration avancée.

Remarque

Si une opération d'API ne comporte aucun paramètre de requête, seul le paramètre d'exécution est requis. Par exemple, seul le paramètre d'exécution est nécessaire lors de l'appel à l'opération DescribeCdnSubList.

L'objet de réponse est nommé <Nom de l'opération d'API>Response. Par exemple, l'objet de réponse pour l'opération d'API SendMessageToGlobe est SendMessageToGlobeResponse.

 // Create runtime parameters.
 AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
 AlibabaCloud.SDK.Dysmsapi20180501.Client client = CreateClient();
 // Send a request.
 AlibabaCloud.SDK.Dysmsapi20180501.Models.SendMessageToGlobeResponse response = client.SendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);

4. Gérer les erreurs

Le SDK classe les exceptions en deux types :

  • TeaUnretryableException : généralement causée par des erreurs réseau. Signalée lorsque le nombre maximal de tentatives est atteint.

  • TeaException : généralement causée par des erreurs métier.

Pour plus d'informations sur la gestion des exceptions du SDK, consultez la rubrique Gestion des exceptions.

Important

Implémentez une gestion appropriée des exceptions, y compris la signalisation, la journalisation et les nouvelles tentatives, afin de garantir la stabilité du système.

Cliquez pour afficher l'exemple de code complet

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

using Tea;
using Tea.Utils;
namespace AlibabaCloud.SDK.Sample
{
    public class Sample 
    {
        public static AlibabaCloud.SDK.Dysmsapi20180501.Client CreateClient()
        {
    
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // Required, please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID is set.
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // Required, please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_SECRET is set.
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
            };
          
            config.Endpoint = "dysmsapi.aliyuncs.com";
            return new AlibabaCloud.SDK.Dysmsapi20180501.Client(config);
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.SDK.Dysmsapi20180501.Client client = CreateClient();
            // Create request object and set required input parameters
            AlibabaCloud.SDK.Dysmsapi20180501.Models.SendMessageToGlobeRequest sendMessageToGlobeRequest = new AlibabaCloud.SDK.Dysmsapi20180501.Models.SendMessageToGlobeRequest
            {   
                // Please replace with the actual recipient number.
                To = "<PHONE_NUMBER>",
                // Please replace with the actual SMS content.
                Message = "<YOUR_MESSAGE>",
            };
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            try
            {
                // Copy the code to run, please print the return value of the API by yourself.
                client.SendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
            }
            catch (TeaException error)
            {
                // Only a printing example. Please be careful about exception handling and do not ignore exceptions directly in engineering projects.
                // print error message
                Console.WriteLine(error.Message);
                // Please click on the link below for diagnosis.
                Console.WriteLine(error.Data["Recommend"]);
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
            catch (Exception _error)
            {
                TeaException error = new TeaException(new Dictionary<string, object>
                {
                    { "message", _error.Message }
                });
                // Only a printing example. Please be careful about exception handling and do not ignore exceptions directly in engineering projects.
                // print error message
                Console.WriteLine(error.Message);
                // Please click on the link below for diagnosis.
                Console.WriteLine(error.Data["Recommend"]);
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
        }

    }
}

Téléchargement de fichiers avec l'opération Advance

Lorsque vous utilisez Image Search ou Visual Intelligence API (VIAPI) pour traiter ou télécharger des images locales, l'API standard ne prend pas en charge les téléchargements directs de fichiers. Utilisez l'opération Advance pour télécharger des fichiers via des flux. Le service stocke temporairement les fichiers téléchargés dans OSS (région par défaut : cn-shanghai) et les relit si nécessaire. L'exemple suivant appelle l'opération DetectBodyCount de VIAPI :

Remarque

Les fichiers temporaires OSS sont régulièrement supprimés.

  1. Initialiser un client de requête

    Spécifiez à la fois RegionId et l'endpoint du service. RegionId définit la région OSS pour le stockage temporaire des fichiers. Si RegionId n'est pas défini, le service peut utiliser une autre région, ce qui entraîne des délais d'expiration de l'API.

    public static AlibabaCloud.SDK.Facebody20191230.Client CreateClient()
    {
        AlibabaCloud.OpenApiClient.Models.Config config =
            new AlibabaCloud.OpenApiClient.Models.Config
            {
                // Required. Make sure that the following environment variable is set in the code runtime environment: ALIBABA_CLOUD_ACCESS_KEY_ID. 
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // Required. Make sure that the following environment variable is set in the code runtime environment: ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
            };
        config.RegionId = "cn-shanghai";
        config.Endpoint = "facebody.cn-shanghai.aliyuncs.com";
        return new AlibabaCloud.SDK.Facebody20191230.Client(config);
    }
  2. Créer un objet de requête

    Créez l'objet de requête <Opération d'API>AdvanceRequest et définissez ImageURLObject pour transmettre le flux de fichiers.

    AlibabaCloud.SDK.Facebody20191230.Models.DetectBodyCountAdvanceRequest detectBodyCountAdvanceRequest =
        new AlibabaCloud.SDK.Facebody20191230.Models.DetectBodyCountAdvanceRequest
        {
            ImageURLObject = File.OpenRead(@"<FILE_PATH>"), // Replace <FILE_PATH> with the actual file path.
        };   
  3. Envoyer une requête

    Appelez la méthode <Nom de l'opération d'API>Advance pour envoyer la requête.

    // Configure the runtime parameters.
    AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
    AlibabaCloud.SDK.Facebody20191230.Client client = CreateClient();
    // Send the request.
    AlibabaCloud.SDK.Facebody20191230.Models.DetectBodyCountResponse response = client.DetectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);
    Console.WriteLine(AlibabaCloud.TeaUtil.Common.ToJSONString(response));

Cliquez pour afficher l'exemple de code complet

// dotnet add package AlibabaCloud.SDK.Facebody20191230 --version 4.1.2

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Tea;
using Tea.Utils;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {
        public static AlibabaCloud.SDK.Facebody20191230.Client CreateClient()
        {
            AlibabaCloud.OpenApiClient.Models.Config config =
                new AlibabaCloud.OpenApiClient.Models.Config
                {
                    // Required. Make sure that the following environment variable is set in the code runtime environment: ALIBABA_CLOUD_ACCESS_KEY_ID. 
                    AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                    // Required. Make sure that the following environment variable is set in the code runtime environment: ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
                    AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
                };
            config.RegionId = "cn-shanghai";
            config.Endpoint = "facebody.cn-shanghai.aliyuncs.com";
            return new AlibabaCloud.SDK.Facebody20191230.Client(config);
        }

        public static void Main(string[] args)
        {
            try
            {
                AlibabaCloud.SDK.Facebody20191230.Client client = CreateClient();
                // Replace <FILE_PATH> with the actual file path.
                using (FileStream fileStream = File.OpenRead(@"<FILE_PATH>"))
                {
                    AlibabaCloud.SDK.Facebody20191230.Models.DetectBodyCountAdvanceRequest detectBodyCountAdvanceRequest =
                        new AlibabaCloud.SDK.Facebody20191230.Models.DetectBodyCountAdvanceRequest
                        {
                            ImageURLObject = fileStream,
                        };
                    AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                    AlibabaCloud.SDK.Facebody20191230.Models.DetectBodyCountResponse response =
                        client.DetectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);
                    Console.WriteLine(AlibabaCloud.TeaUtil.Common.ToJSONString(response));
                }
            }
            catch (TeaException error)
            {
                // Handle exceptions with caution based on your actual business scenario and do not ignore exceptions in your project. The error messages displayed in this example are for reference only. 
                Console.WriteLine(error.Message);
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
            catch (Exception _error)
            {
                TeaException error = new TeaException(
                    new Dictionary<string, object> { { "message", _error.Message } }
                );
                // Handle exceptions with caution based on your actual business scenario and do not ignore exceptions in your project. The error messages displayed in this example are for reference only. 
                Console.WriteLine(error.Message);
                AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
            }
        }
    }
}

FAQ

  • Comment gérer l'erreur « You are not authorized to perform this operation » générée par une opération d'API ?

    Cause : La paire AccessKey de l'utilisateur RAM ne dispose pas des autorisations requises.

    Solution : Accordez les autorisations requises à l'utilisateur RAM. Pour plus d'informations, consultez la rubrique Gérer les autorisations des utilisateurs RAM.

    Par exemple, si l'erreur « You are not authorized to perform this operation » est générée par l'opération d'API SendMessageToGlobe, créez la stratégie personnalisée suivante pour accorder les autorisations requises à l'utilisateur RAM :

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "dysms:SendMessageToGlobe",
          "Resource": "*"
        }
      ]
    }
  • Comment gérer l'erreur « System.UnretryableException: One or more errors occurred » générée par une opération d'API ?

    Cause : L'endpoint spécifié n'est pas pris en charge par cette opération d'API.

    Solution : Spécifiez un endpoint pris en charge et réessayez. Pour plus d'informations, consultez la rubrique Configurer les endpoints.

  • Comment gérer l'erreur « ErrorCode":"InvalidAccessKeyId.NotFound","ErrorMessage":"Specified access key is not found" » générée par une opération d'API ?

    Cause : La paire AccessKey n'a pas été transmise correctement.

    Solution : Vérifiez que la paire AccessKey est transmise correctement lors de l'initialisation du client. Environment.GetEnvironmentVariable("XXX") lit la valeur XXX à partir des variables d'environnement.

Pour plus d'informations sur la gestion des erreurs du SDK, consultez la rubrique FAQ du SDK .NET.