Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud SDK:.NET için Alibaba Cloud SDK V2.0 Entegrasyonu

Son Güncelleme:Oct 07, 2026

Alibaba Cloud SDK'yı .NET projenize entegre ederek API çağrılarını basitleştirin ve bakım maliyetlerini azaltın. Entegrasyon üç adımdan oluşur: SDK'yı yükleyin, bir erişim kimlik bilgisini yapılandırın ve API işlemlerini çağırın.

Ön Koşullar

  • .NET Framework 4.5 veya üzeri ya da .NET Standard 2.0 veya üzeri.

  • C# 5,0 veya üzeri.

SDK'yı Yükleyin

  1. SDK Center adresine gidin ve SDK'sını kullanmak istediğiniz hizmeti seçin. Bu örnekte, Short Message Service (SMS) seçilmiştir.

  2. Short Message Service sayfasında , All languages bölümünden C# dilini seçin. Quick Start sekmesinde, Short Message Service (SMS) SDK'sının kurulum yöntemini edinin.image

Not

Kaynak kodunu ve kurulum kılavuzlarını GitHub üzerinde görüntüleyin.

Erişim Kimlik Bilgisini Yapılandırın

OpenAPI işlemlerini çağırmak için AccessKey veya Security Token Service (STS) token gibi erişim kimlik bilgileri gerekir. Sızıntıları önlemek için kimlik bilgilerini ortam değişkenlerinde saklayın. En iyi uygulamalar için bkz. Erişim kimlik bilgilerini güvenli şekilde kullanma. Aşağıdaki örneklerde ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET ortam değişkenleri kullanılmaktadır.

Linux ve macOS'ta yapılandırma yöntemi

Aşağıdaki örneklerde değişken adları olarak ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET kullanılmıştır. Gerekirse bunları kendi adlarınızla değiştirin; örneğin, OSS_ACCESS_KEY_ID ve OSS_ACCESS_KEY_SECRET.

Ortam değişkenlerini ayarlamak için aşağıdaki export komutlarını çalıştırın:

Önemli

export ile ayarlanan değişkenler geçicidir ve yalnızca geçerli oturum için geçerlidir. Kalıcılık sağlamak için export komutunu kabuk başlangıç dosyanıza (örneğin ~/.bashrc veya ~/.zshrc) ekleyin.

  • AccessKey ID değerini ayarlayın:

    # Replace yourAccessKeyID with your AccessKey ID.
    export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID
  • AccessKey secret değerini ayarlayın:

    # Replace yourAccessKeySecret with your AccessKey secret.
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
  • Yapılandırmayı doğrulayın.

    echo $ALIBABA_CLOUD_ACCESS_KEY_ID komutunu çalıştırın. Doğru değer döndürülüyorsa yapılandırma başarılıdır.

Windows'ta yapılandırma yöntemi

Grafik kullanıcı arabirimini (GUI) kullanma

  • Prosedür

    Aşağıdaki adımlar, Windows 10'da GUI kullanarak ortam değişkenlerinin nasıl ayarlanacağını açıklar.

    Masaüstünüzde This PC öğesine sağ tıklayın ve Properties > Advanced system settings > Environment Variables yolunu izleyin. System variables veya User variables bölümünün altındaki New seçeneğine tıklayın. Ardından yapılandırmayı tamamlayın.

    Değişken

    Örnek değer

    AccessKey ID

    • Değişken adı: ALIBABA_CLOUD_ACCESS_KEY_ID

    • Değişken değeri: yourAccessKeyID

    AccessKey secret

    • Değişken adı: ALIBABA_CLOUD_ACCESS_KEY_SECRET

    • Değişken değeri: yourAccessKeySecret

  • Yapılandırmayı test edin

    Start öğesine tıklayın (veya Win+R klavye kısayolunu kullanın), Run öğesine tıklayın, cmd girin ve ardından komut istemini açmak için OK öğesine tıklayın (veya Enter tuşuna basın). echo %ALIBABA_CLOUD_ACCESS_KEY_ID% ve echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% komutlarını çalıştırın. Komutlar doğru AccessKey değerini döndürüyorsa yapılandırma başarılıdır.

Komut istemini (CMD) kullanma

  • Prosedür

    Komut istemini yönetici olarak açın ve sisteme yeni ortam değişkenleri eklemek için aşağıdaki komutları çalıştırın.

    setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M
    setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M

    /M parametresi bir sistem ortam değişkenini belirtir. Kullanıcı ortam değişkeni ayarlarken bu parametreyi atlayabilirsiniz.

  • Yapılandırmayı test edin

    Start öğesine tıklayın (veya Win+R klavye kısayolunu kullanın), Run öğesine tıklayın, cmd girin ve ardından komut istemini açmak için OK öğesine tıklayın (veya Enter tuşuna basın). echo %ALIBABA_CLOUD_ACCESS_KEY_ID% ve echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% komutlarını çalıştırın. Komutlar doğru AccessKey değerini döndürüyorsa yapılandırma başarılıdır.

Windows PowerShell kullanma

PowerShell'de tüm yeni oturumlarda geçerli olacak yeni ortam değişkenleri ayarlayabilirsiniz:

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

Tüm kullanıcılar için ortam değişkenleri ayarlamak üzere yönetici izinlerine sahip olmanız gerekir:

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

Yalnızca geçerli oturum için geçerli olacak geçici ortam değişkenleri ayarlayabilirsiniz:

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

PowerShell'de Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID ve Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET komutlarını çalıştırın. Komutlar doğru AccessKey değerini döndürüyorsa yapılandırma başarılıdır.

SDK'yı Kullanın

Bu örnekte, SendMessageToGlobe hizmetinin Short Message Service (SMS) işlemi çağrılmaktadır. SendMessageToGlobe hakkında daha fazla bilgi için bkz. SendMessageToGlobe.

1. Bir istemci nesnesini başlatın

Tüm API istekleri bir istemci nesnesi aracılığıyla gönderilir. Herhangi bir API işlemini çağırmadan önce istemciyi başlatın. Birden fazla başlatma yöntemi mevcuttur. Bu örnekte bir AccessKey çifti kullanılmaktadır. Daha fazla bilgi için bkz. Erişim kimlik bilgilerini yönetme.

Önemli
  • İstemci nesneleri (örneğin Dysmsapi Client örnekleri) iş parçacığı güvenlidir. Her iş parçacığı için ayrı bir örnek oluşturmanıza gerek yoktur.

  • new anahtar sözcüğüyle sık sık istemci nesneleri oluşturmayın; bu, kaynakları boşa harcar ve performansı düşürür. Her erişim kimlik bilgisi ve endpoint için yalnızca bir Client örneği olduğundan emin olmak amacıyla singleton tasarım desenini kullanın.

 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. Bir istek nesnesi oluşturun

Her API işleminin <API işlemi adı>Request adlı bir istek nesnesi vardır. Örneğin, SendMessageToGlobe istek nesnesi SendMessageToGlobeRequest şeklindedir. SendMessageToGlobe işleminin parametreleri hakkında daha fazla bilgi için bkz. SendMessageToGlobe.

Not

Bir API işleminin istek parametresi yoksa istek nesnesini atlayın. Örneğin, DescribeCdnSubList işlemi istek parametresi gerektirmez.

// 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. İsteği başlatın

API işlemini <API işlemi adı>WithOptions yöntemiyle çağırın. Bu yöntem iki parametre alır: önceki adımdaki istek nesnesi ve zaman aşımı ile proxy yapılandırmaları için bir çalışma zamanı parametresi. Daha fazla bilgi için bkz. Gelişmiş yapılandırma.

Not

Bir API işleminin istek parametresi yoksa yalnızca çalışma zamanı parametresi gereklidir. Örneğin, DescribeCdnSubList işlemini çağırırken yalnızca çalışma zamanı parametresine ihtiyaç duyulur.

Yanıt nesnesi <API işlemi adı>Response olarak adlandırılır. Örneğin, SendMessageToGlobe API işlemi için yanıt nesnesi SendMessageToGlobeResponse şeklindedir.

 // 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. Hataları işleyin

SDK, özel durumları iki türe ayırır:

  • TeaUnretryableException: Genellikle ağ hatalarından kaynaklanır. Maksimum yeniden deneme sayısına ulaşıldığında bildirilir.

  • TeaException: Genellikle iş mantığı hatalarından kaynaklanır.

SDK özel durumlarının nasıl işleneceği hakkında daha fazla bilgi için bkz. Özel durum işleme.

Önemli

Sistem kararlılığını sağlamak için raporlama, günlük kaydı ve yeniden deneme işlemlerini içeren uygun özel durum işleme mekanizmaları uygulayın.

Tam örnek kodu görüntülemek için tıklayın

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);
            }
        }

    }
}

Advance işlemiyle dosya yükleme

Image Search veya Visual Intelligence API (VIAPI) kullanarak yerel görüntüleri işlerken veya yüklerken standart API doğrudan dosya yüklemeyi desteklemez. Dosyaları akışlar aracılığıyla yüklemek için Advance işlemini kullanın. Hizmet, yüklenen dosyaları OSS'te geçici olarak depolar (varsayılan bölge: cn-shanghai) ve gerektiğinde bunları geri okur. Aşağıdaki örnek, VIAPI'nin DetectBodyCount işlemini çağırır:

Not

OSS geçici dosyaları düzenli aralıklarla temizlenir.

  1. Bir istemci nesnesini başlatın

    Hem RegionId hem de hizmet endpoint değerlerini belirtin. RegionId değeri, geçici dosya depolama için OSS bölgesini ayarlar. RegionId ayarlanmazsa hizmet farklı bir bölge kullanabilir ve bu durum API zaman aşımlarına neden olabilir.

    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. Bir istek nesnesi oluşturun

    <API işlemi>AdvanceRequest istek nesnesini oluşturun ve dosya akışını iletmek için ImageURLObject değerini ayarlayın.

    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. Bir istek başlatın

    İsteği göndermek için <API işlemi adı>Advance yöntemini çağırın.

    // 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));

Tam örnek kodu görüntülemek için tıklayın

// 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);
            }
        }
    }
}

SSS

  • Bir API işlemi tarafından oluşturulan "You are not authorized to perform this operation" hatasını nasıl işlerim?

    Neden: RAM kullanıcısının AccessKey çifti gerekli izinlere sahip değildir.

    Çözüm: RAM kullanıcısına gerekli izinleri verin. Daha fazla bilgi için bkz. RAM kullanıcı izinlerini yönetme.

    Örneğin, SendMessageToGlobe API işlemi "You are not authorized to perform this operation" hatasını oluşturuyorsa gerekli izinleri RAM kullanıcısına vermek için aşağıdaki özel ilkeyi oluşturun:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "dysms:SendMessageToGlobe",
          "Resource": "*"
        }
      ]
    }
  • Bir API işlemi tarafından oluşturulan "System.UnretryableException: One or more errors occurred" hatasını nasıl işlerim?

    Neden: Belirtilen uç nokta bu API işlemi tarafından desteklenmiyor.

    Çözüm: Desteklenen bir uç nokta belirtin ve tekrar deneyin. Daha fazla bilgi için bkz. Uç noktaları yapılandırma.

  • Bir API işlemi tarafından oluşturulan "ErrorCode":"InvalidAccessKeyId.NotFound","ErrorMessage":"Specified access key is not found" hatasını nasıl işlerim?

    Neden: AccessKey çifti doğru şekilde iletilmedi.

    Çözüm: İstemci başlatma sırasında AccessKey çiftinin doğru şekilde iletildiğini doğrulayın. Environment.GetEnvironmentVariable("XXX") ifadesi, XXX değerini ortam değişkenlerinden okur.

SDK hatalarının nasıl işleneceği hakkında daha fazla bilgi için bkz. .NET SDK SSS.