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
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é.
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).

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 :
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 commandesecho %ALIBABA_CLOUD_ACCESS_KEY_ID%etecho %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 /MLe paramètre
/Mindique 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 commandesecho %ALIBABA_CLOUD_ACCESS_KEY_ID%etecho %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.
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.
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.
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.
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
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 :
Les fichiers temporaires OSS sont régulièrement supprimés.
-
Initialiser un client de requête
Spécifiez à la fois
RegionIdet l'endpointdu service.RegionIddéfinit la région OSS pour le stockage temporaire des fichiers. SiRegionIdn'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); } -
Créer un objet de requête
Créez l'objet de requête <Opération d'API>AdvanceRequest et définissez
ImageURLObjectpour 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. }; -
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));
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 valeurXXXà partir des variables d'environnement.
Pour plus d'informations sur la gestion des erreurs du SDK, consultez la rubrique FAQ du SDK .NET.