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
SDK Center adresine gidin ve SDK'sını kullanmak istediğiniz hizmeti seçin. Bu örnekte, Short Message Service (SMS) seçilmiştir.
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.

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:
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_IDkomutunu ç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,
cmdgirin 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%veecho %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/Mparametresi 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,
cmdgirin 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%veecho %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.
İ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
endpointiç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.
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.
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.
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
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:
OSS geçici dosyaları düzenli aralıklarla temizlenir.
-
Bir istemci nesnesini başlatın
Hem
RegionIdhem de hizmetendpointdeğerlerini belirtin.RegionIddeğeri, geçici dosya depolama için OSS bölgesini ayarlar.RegionIdayarlanmazsa 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); } -
Bir istek nesnesi oluşturun
<API işlemi>AdvanceRequest istek nesnesini oluşturun ve dosya akışını iletmek için
ImageURLObjectdeğ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. }; -
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));
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,XXXdeğ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.