Tous les produits
Search
Centre de documentation

Object Storage Service:Démarrage rapide (SDK C# V1)

Dernière mise à jour :Aug 27, 2026

Le SDK OSS pour C# prend en charge les opérations de stockage courantes dans Object Storage Service (OSS). Cette rubrique explique comment installer le SDK, configurer les identifiants d'accès et exécuter des exemples de programmes pour les opérations de base sur les buckets et les objets.

Prérequis

  • Assurez-vous d'avoir créé un compte Alibaba Cloud et effectué la vérification de votre identité.

  • Déterminez la région et l'endpoint du bucket que vous souhaitez utiliser. Pour connaître les correspondances entre les régions et les endpoints pris en charge par OSS, consultez la section Régions et endpoints.

  • Préparez un projet C# dans lequel vous pourrez ajouter le SDK et exécuter l'exemple de code.

Étape 1 : Installer le SDK OSS pour C#

Choisissez le package correspondant au framework cible de votre projet : Aliyun.OSS.SDK pour .NET Framework, ou Aliyun.OSS.SDK.NetCore pour .NET Core.

Installation sous Windows

Installation via NuGet

  • Si NuGet n'est pas installé dans votre Visual Studio, installez d'abord NuGet.

  • Créez un projet ou ouvrez un projet existant dans Visual Studio, puis choisissez Tools > NuGet Package Manager > Manage NuGet Packages for Solution.

  • Recherchez aliyun.oss.sdk. Dans les résultats, trouvez Aliyun.OSS.SDK ou Aliyun.OSS.SDK.NetCore, sélectionnez la dernière version, puis cliquez sur Install.

Installation par référence à la DLL

  • Téléchargez et décompressez le package SDK .NET depuis le dépôt SDK sur GitHub.

  • Compilez le projet aliyun-oss-sdk en mode Release pour générer une bibliothèque DLL.

  • Ouvrez Solution Explorer dans Visual Studio, sélectionnez votre projet, faites un clic droit sur le nom du projet et choisissez References > Add Reference. Dans la boîte de dialogue qui s'affiche, sélectionnez Browse.

  • Accédez au répertoire bin où la bibliothèque DLL a été générée, sélectionnez le fichier Aliyun.OSS.dll, puis cliquez sur OK.

Installation par importation du projet

Si vous avez téléchargé le package SDK ou le code source depuis le dépôt SDK sur GitHub et souhaitez installer le SDK à partir du code source, procédez comme suit :

  • Dans Visual Studio, faites un clic droit et sélectionnez Solutions, puis cliquez sur Add Existing Project dans le menu contextuel qui s'affiche.

  • Dans la boîte de dialogue qui s'affiche, sélectionnez le fichier aliyun-oss-sdk.csproj et cliquez sur Open.

  • Faites un clic droit sur le nom du projet et choisissez References > Add Reference. Dans la boîte de dialogue qui s'affiche, sélectionnez l'onglet Project, sélectionnez le projet aliyun-oss-sdk, puis cliquez sur OK.

Installation sous Unix ou macOS

Pour installer le SDK via NuGet, procédez comme suit :

  • Dans Xamarin, créez un projet ou ouvrez un projet existant, puis choisissez Tools > Add NuGet Packages.

  • Recherchez Aliyun.OSS.SDK ou Aliyun.OSS.SDK.NetCore, sélectionnez la dernière version, puis cliquez sur Add Package pour l'ajouter à votre projet.

Étape 2 : Configurer les identifiants d'accès

Le SDK OSS pour C# lit les identifiants d'accès à partir des variables d'environnement OSS_ACCESS_KEY_ID et OSS_ACCESS_KEY_SECRET. Créez d'abord une paire AccessKey, puis stockez-la dans ces variables d'environnement.

Créer une paire AccessKey pour un utilisateur RAM

Créez une paire AccessKey pour un utilisateur RAM disposant des autorisations de gestion OSS en utilisant l'une des méthodes suivantes :

  • Console RAM — Pour obtenir des instructions, consultez la section Créer une paire AccessKey pour un utilisateur RAM disposant des autorisations de gestion OSS.

  • Modèle ROS — Utilisez un modèle Resource Orchestration Service (ROS) pour créer rapidement une paire AccessKey pour un utilisateur RAM disposant des autorisations de gestion OSS. Sur la page Create Stack de la console ROS, cochez la case sous Security Confirmation, puis cliquez sur Create. Une fois la pile créée, copiez la paire AccessKey créée depuis Outputs.

Configurer les variables d'environnement

Utilisez la paire AccessKey de l'utilisateur RAM pour configurer les variables d'environnement sur le système d'exploitation de votre environnement de développement.

Linux

  • Exécutez les commandes suivantes pour ajouter les paramètres des variables d'environnement au fichier ~/.bashrc.

echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
  • Exécutez la commande suivante pour appliquer les modifications.

source ~/.bashrc
  • Vérifiez que les variables d'environnement sont prises en compte.

echo $OSS_ACCESS_KEY_ID
echo $OSS_ACCESS_KEY_SECRET

macOS

  • Exécutez la commande suivante dans le terminal pour afficher le type de shell par défaut.

echo $SHELL
  • Configurez les variables d'environnement en fonction du type de shell par défaut.

Zsh

  • Exécutez les commandes suivantes pour ajouter les paramètres des variables d'environnement au fichier ~/.zshrc.

echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
  • Exécutez la commande suivante pour appliquer les modifications.

source ~/.zshrc
  • Vérifiez que les variables d'environnement sont prises en compte.

echo $OSS_ACCESS_KEY_ID
echo $OSS_ACCESS_KEY_SECRET

Bash

  • Exécutez les commandes suivantes pour ajouter les paramètres des variables d'environnement au fichier ~/.bash_profile.

echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
  • Exécutez la commande suivante pour appliquer les modifications.

source ~/.bash_profile
  • Vérifiez que les variables d'environnement sont prises en compte.

echo $OSS_ACCESS_KEY_ID
echo $OSS_ACCESS_KEY_SECRET

Windows

CMD

  • Exécutez les commandes suivantes dans CMD.

setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
  • Vérifiez que les variables d'environnement sont prises en compte.

echo %OSS_ACCESS_KEY_ID%
echo %OSS_ACCESS_KEY_SECRET%

PowerShell

  • Exécutez les commandes suivantes dans PowerShell.

[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
  • Vérifiez que les variables d'environnement sont prises en compte.

[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)

Après avoir modifié les variables d'environnement système comme décrit ci-dessus, redémarrez ou actualisez vos environnements de build et d'exécution, y compris votre IDE, votre interface de ligne de commande, vos autres applications de bureau et vos services en arrière-plan, afin de vous assurer que les dernières variables d'environnement système sont chargées.

Étape 3 : Effectuer des opérations OSS de base

Les exemples de programmes suivants montrent comment créer un bucket, ainsi que charger, télécharger, lister et supprimer des objets. Chaque exemple obtient les identifiants d'accès à partir des variables d'environnement ; assurez-vous donc que OSS_ACCESS_KEY_ID et OSS_ACCESS_KEY_SECRET sont configurés avant d'exécuter un exemple de programme. Pour exécuter un exemple de programme :

  • Créez un fichier main.cs dans le répertoire de votre projet de test et copiez l'exemple de code requis dans le fichier main.cs.

  • Remplacez les espaces réservés dans l'exemple de code par vos configurations réelles :

    • yourEndpoint : l'endpoint de la région dans laquelle se trouve le bucket. Pour la région Chine (Hangzhou), l'endpoint est https://oss-cn-hangzhou.aliyuncs.com.

    • yourRegion : l'ID de la région dans laquelle se trouve le bucket, par exemple cn-hangzhou pour la région Chine (Hangzhou).

    • Le nom du bucket : yourBucketName ou examplebucket dans les exemples.

    • Le chemin complet de l'objet, par exemple exampledir/exampleobject.txt. Le chemin complet ne doit pas contenir le nom du bucket.

    • Le chemin complet du fichier local, par exemple D:\localpath\examplefile.txt. Si vous ne spécifiez pas de chemin local, l'objet est chargé ou téléchargé depuis ou vers le chemin local du projet auquel appartient l'exemple de programme. Si le fichier local spécifié n'existe pas lors d'un téléchargement, le fichier est créé.

  • Exécutez la commande suivante.

dotnet script main.cs

Créer un bucket

L'exemple de code suivant crée un bucket.

using Aliyun.OSS;
// Set yourEndpoint to the endpoint of the region in which the bucket is located.
var endpoint = "yourEndpoint";
// Set yourRegion to the ID of the region in which the bucket is located.
var region = "yourRegion";
// Obtain access credentials from environment variables.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Specify the name of the bucket.
var bucketName = "yourBucketName";
// Create a ClientConfiguration instance and modify the default parameters as required.
var conf = new ClientConfiguration();
// Specify the V4 signature algorithm.
conf.SignatureVersion = SignatureVersion.V4;
// Create an OssClient instance.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    // Create a bucket.
    var bucket = client.CreateBucket(bucketName);
    Console.WriteLine("Create bucket succeeded, {0} ", bucket.Name);
}
catch (Exception ex)
{
    Console.WriteLine("Create bucket failed, {0}", ex.Message);
}

Si le bucket est créé, le programme affiche Create bucket succeeded et le nom du bucket.

Charger un objet

L'exemple de code suivant charge un fichier local vers un bucket en tant qu'objet.

using Aliyun.OSS;
// Set yourEndpoint to the endpoint of the region in which the bucket is located.
var endpoint = "yourEndpoint";
// Set yourRegion to the ID of the region in which the bucket is located.
var region = "yourRegion";
// Obtain access credentials from environment variables.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Specify the name of the bucket.
var bucketName = "examplebucket";
// Specify the full path of the object, which cannot contain the bucket name.
var objectName = "exampledir/exampleobject.txt";
// Specify the full path of the local file to upload.
var localFilename = "D:\\localpath\\examplefile.txt";
// Create a ClientConfiguration instance and modify the default parameters as required.
var conf = new ClientConfiguration();
// Specify the V4 signature algorithm.
conf.SignatureVersion = SignatureVersion.V4;
// Create an OssClient instance.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    // Upload the object.
    var result = client.PutObject(bucketName, objectName, localFilename);
    Console.WriteLine("Put object succeeded, ETag: {0} ", result.ETag);
}
catch (Exception ex)
{
    Console.WriteLine("Put object failed, {0}", ex.Message);
}

Si l'objet est chargé, le programme affiche Put object succeeded et l'ETag de l'objet.

Télécharger un objet

L'exemple de code suivant télécharge un objet vers un fichier local.

using Aliyun.OSS;
using Aliyun.OSS.Common;
// Set yourEndpoint to the endpoint of the region in which the bucket is located.
var endpoint = "yourEndpoint";
// Set yourRegion to the ID of the region in which the bucket is located.
var region = "yourRegion";
// Obtain access credentials from environment variables.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Specify the name of the bucket.
var bucketName = "examplebucket";
// Specify the full path of the object, which cannot contain the bucket name.
var objectName = "exampledir/exampleobject.txt";
// Specify the full path of the local file to which the object is downloaded.
var downloadFilename = "D:\\localpath\\examplefile.txt";
// Create a ClientConfiguration instance and modify the default parameters as required.
var conf = new ClientConfiguration();
// Specify the V4 signature algorithm.
conf.SignatureVersion = SignatureVersion.V4;
// Create an OssClient instance.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{   
    // Download the object.
    var result = client.GetObject(bucketName, objectName);
    using (var requestStream = result.Content)
    {
        using (var fs = File.Open(downloadFilename, FileMode.OpenOrCreate))
        {
            int length = 4 * 1024;
            var buf = new byte[length];
            do
            {
                length = requestStream.Read(buf, 0, length);
                fs.Write(buf, 0, length);
            } while (length != 0);
        }
    }
    Console.WriteLine("Get object succeeded");
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}

Si l'objet est téléchargé, le programme affiche Get object succeeded et le contenu de l'objet est écrit dans le fichier local.

Lister des objets

L'exemple de code suivant liste les objets d'un bucket.

using Aliyun.OSS;
using Aliyun.OSS.Common;
// Set yourEndpoint to the endpoint of the region in which the bucket is located.
var endpoint = "yourEndpoint";
// Set yourRegion to the ID of the region in which the bucket is located.
var region = "yourRegion";
// Obtain access credentials from environment variables.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Specify the name of the bucket.
var bucketName = "examplebucket";
// Create a ClientConfiguration instance and modify the default parameters as required.
var conf = new ClientConfiguration();
// Specify the V4 signature algorithm.
conf.SignatureVersion = SignatureVersion.V4;
// Create an OssClient instance.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    var objects = new List<string>();
    ObjectListing result = null;
    string nextMarker = string.Empty;
    do
    {
        var listObjectsRequest = new ListObjectsRequest(bucketName)
        {
            Marker = nextMarker,
        };
        // List the objects.
        result = client.ListObjects(listObjectsRequest);
        foreach (var summary in result.ObjectSummaries)
        {
            Console.WriteLine(summary.Key);
            objects.Add(summary.Key);
        }
        nextMarker = result.NextMarker;
    } while (result.IsTruncated);
    Console.WriteLine("List objects of bucket:{0} succeeded ", bucketName);
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}

Si les objets sont listés, le programme affiche le nom de chaque objet, puis List objects of bucket avec le nom du bucket.

Supprimer un objet

L'exemple de code suivant supprime un objet d'un bucket.

using Aliyun.OSS;
// Set yourEndpoint to the endpoint of the region in which the bucket is located.
var endpoint = "yourEndpoint";
// Set yourRegion to the ID of the region in which the bucket is located.
var region = "yourRegion";
// Obtain access credentials from environment variables.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Specify the name of the bucket.
var bucketName = "examplebucket";
// Specify the full path of the object, which cannot contain the bucket name.
var objectName = "exampledir/exampleobject.txt";
// Create a ClientConfiguration instance and modify the default parameters as required.
var conf = new ClientConfiguration();
// Specify the V4 signature algorithm.
conf.SignatureVersion = SignatureVersion.V4;
// Create an OssClient instance.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    // Delete the object.
    client.DeleteObject(bucketName, objectName);
    Console.WriteLine("Delete object succeeded");
}
catch (Exception ex)
{
    Console.WriteLine("Delete object failed, {0}", ex.Message);
}

Si l'objet est supprimé, le programme affiche Delete object succeeded.

FAQ

Que faire si l'erreur AccessDenied est signalée lors de l'utilisation des SDK OSS ?

Une erreur AccessDenied survient généralement en raison d'autorisations insuffisantes. Suivez ces étapes pour résoudre le problème :

  1. Vérifiez votre paire AccessKey : assurez-vous que l'AccessKey ID et l'AccessKey Secret que vous utilisez sont corrects. Pour plus d'informations, consultez la section Créer une paire AccessKey.

  2. Vérifiez les autorisations accordées aux utilisateurs RAM : assurez-vous que l'utilisateur RAM dispose des autorisations requises pour effectuer des opérations sur le bucket ou l'objet. Pour plus d'informations, consultez la section Gérer les autorisations des utilisateurs RAM.

  3. Vérifiez les politiques de bucket : si le message d'erreur contient « Access denied by bucket policy », cela indique que l'erreur est due aux restrictions spécifiées dans les politiques de bucket. Pour plus d'informations, consultez la section Politique de bucket.

  4. Pour obtenir des informations sur les autres types d'erreurs, consultez la section Codes d'erreur. Par exemple, vous pouvez consulter la section 03-ACCESS_CONTROL pour les erreurs courantes liées au contrôle d'accès.

Références

  • Pour plus d'informations sur le SDK OSS pour C#, consultez le dépôt SDK sur GitHub.

  • Pour des exemples de code illustrant davantage de fonctionnalités, consultez les exemples GitHub.