Integre o Alibaba Cloud SDK ao seu projeto .NET para simplificar as chamadas de API e reduzir os custos de manutenção. A integração envolve três etapas: instalar o SDK, configurar uma credencial de acesso e chamar as operações de API.
Pré-requisitos
.NET Framework 4.5 ou posterior, ou .NET Standard 2.0 ou posterior.
C# 5,0 ou posterior.
Instale o SDK
Acesse SDK Center e selecione o service cujo SDK você deseja usar. Neste exemplo, Short Message Service (SMS) está selecionado.
Na página Short Message Service, selecione C# na seção All languages. Na aba Quick Start, obtenha o método de instalação do SDK do Short Message Service (SMS).

Visualize o código-fonte e as diretrizes de instalação no GitHub.
Configure uma credencial de acesso
Chamar operações OpenAPI requer credenciais de acesso, como AccessKey ou Security Token Service (STS) token. Armazene as credenciais em variáveis de ambiente para evitar vazamentos. Para conhecer as melhores práticas, consulte Securely use access credentials. Os exemplos a seguir utilizam as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET.
Configuration method in Linux and macOS
Os exemplos a seguir utilizam ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET como nomes de variável. Substitua-os pelos seus próprios nomes, se necessário, como OSS_ACCESS_KEY_ID e OSS_ACCESS_KEY_SECRET.
Execute os seguintes comandos export para definir as variáveis de ambiente:
As variáveis definidas com export são temporárias e válidas apenas para a sessão atual. Para torná-las persistentes, adicione o comando export ao arquivo de inicialização do seu shell (como ~/.bashrc ou ~/.zshrc).
-
Defina o AccessKey ID:
# Replace yourAccessKeyID with your AccessKey ID. export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID -
Defina o AccessKey secret:
# Replace yourAccessKeySecret with your AccessKey secret. export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret -
Verifique a configuração.
Execute
echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Se o valor correto for retornado, a configuração foi bem-sucedida.
Configuration method in Windows
Use the graphical user interface (GUI)
-
Procedimento
As etapas a seguir descrevem como definir variáveis de ambiente pela GUI no Windows 10.
Na área de trabalho, clique com o botão direito em This PC e escolha Properties > Advanced system settings > Environment Variables > New em System variables ou User variables. Em seguida, conclua a configuração.
Variable
Example value
AccessKey ID
Variable name: ALIBABA_CLOUD_ACCESS_KEY_ID
Variable value: yourAccessKeyID
AccessKey secret
Variable name: ALIBABA_CLOUD_ACCESS_KEY_SECRET
Variable value: yourAccessKeySecret
-
Teste a configuração
Clique em Start (ou use o atalho Win+R), clique em Run, insira
cmd, e clique em OK (ou pressione Enter) para abrir o prompt de comando. Execute os comandosecho %ALIBABA_CLOUD_ACCESS_KEY_ID%eecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Se os comandos retornarem o AccessKey correto, a configuração foi bem-sucedida.
Use the command prompt (CMD)
-
Procedimento
Abra o prompt de comando como administrador e execute os seguintes comandos para adicionar novas variáveis de ambiente ao sistema.
setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /MO parâmetro
/Mindica uma variável de ambiente do sistema. Omita-o quando precisar definir uma variável de ambiente de usuário. -
Teste a configuração
Clique em Start (ou use o atalho Win+R), clique em Run, insira
cmd, e clique em OK (ou pressione Enter) para abrir o prompt de comando. Execute os comandosecho %ALIBABA_CLOUD_ACCESS_KEY_ID%eecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Se os comandos retornarem o AccessKey correto, a configuração foi bem-sucedida.
Use Windows PowerShell
No PowerShell, é possível definir novas variáveis de ambiente válidas para todas as novas sessões:
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::User)
Para definir variáveis de ambiente para todos os usuários, são necessárias permissões administrativas:
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)
Também é possível definir variáveis de ambiente temporárias, válidas apenas para a sessão atual:
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "yourAccessKeyID"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "yourAccessKeySecret"
No PowerShell, execute os comandos Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID e Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET. Se os comandos retornarem o AccessKey correto, a configuração foi bem-sucedida.
Use o SDK
Este exemplo chama a operação SendMessageToGlobe do Short Message Service (SMS). Para mais informações sobre SendMessageToGlobe, consulte SendMessageToGlobe.
1. Inicialize um cliente de requisição
Todas as requisições de API são enviadas por meio de um objeto client. Inicialize o client antes de chamar qualquer operação de API. Há vários métodos de inicialização disponíveis. Este exemplo utiliza um par de AccessKey. Para mais informações, consulte Manage access credentials.
Objetos client (como instâncias do Dysmsapi Client) são thread-safe. Não é necessário criar uma instância para cada thread.
Evite criar objetos client frequentemente com a palavra-chave
new— isso desperdiça recursos e degrada o desempenho. Adote o padrão singleton para garantir apenas uma instância de Client por credencial de acesso eendpoint.
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. Crie um objeto de requisição
Cada operação de API possui um objeto de requisição chamado <nome da operação de API>Request. Por exemplo, o objeto de requisição de SendMessageToGlobe é SendMessageToGlobeRequest. Para mais informações sobre os parâmetros da operação SendMessageToGlobe, consulte SendMessageToGlobe.
Se uma operação de API não tiver parâmetros de requisição, ignore o objeto de requisição. Por exemplo, a operação DescribeCdnSubList não requer parâmetros de requisição.
// 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. Envie a requisição
Chame a operação de API usando o método <nome da operação de API>WithOptions. Esse método recebe dois parâmetros: o objeto de requisição da etapa anterior e um parâmetro de runtime para configurações de timeout e proxy. Para mais informações, consulte Advanced configuration.
Se uma operação de API não tiver parâmetros de requisição, apenas o parâmetro de runtime é necessário. Por exemplo, somente o parâmetro de runtime é necessário ao chamar a operação DescribeCdnSubList.
O objeto de resposta é chamado <nome da operação de API>Response. Por exemplo, o objeto de resposta da operação de API SendMessageToGlobe é 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. Trate os erros
O SDK classifica as exceções em dois tipos:
TeaUnretryableException: normalmente causada por erros de rede. É lançada quando o número máximo de tentativas é atingido.
TeaException: normalmente causada por erros de negócio.
Para mais informações sobre como tratar exceções do SDK, consulte Exception handling.
Implemente o tratamento adequado de exceções — incluindo relatório, log e novas tentativas — para garantir a estabilidade do sistema.
Clique para ver o código de exemplo completo
Upload de arquivos com a operação Advance
Ao usar o Image Search ou o Visual Intelligence API (VIAPI) para processar ou fazer upload de imagens locais, a API padrão não oferece suporte a uploads diretos de arquivos. Use a operação Advance para fazer upload de arquivos por meio de streams. O service armazena temporariamente os arquivos enviados no OSS (região padrão: cn-shanghai) e os lê quando necessário. O exemplo a seguir chama a operação DetectBodyCount do VIAPI:
Os arquivos temporários no OSS são limpos periodicamente.
-
Inicialize um cliente de requisição
Especifique tanto o
RegionIdquanto oendpointdo service. ORegionIddefine a região do OSS para o armazenamento temporário de arquivos. Se oRegionIdnão estiver definido, o service poderá usar uma região diferente, causando timeouts na 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); } -
Crie um objeto de requisição
Crie o objeto de requisição <operação de API>AdvanceRequest e defina
ImageURLObjectpara passar o stream do arquivo.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. }; -
Envie a requisição
Chame o método <nome da operação de API>Advance para enviar a requisição.
// 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));
Perguntas frequentes
-
Como tratar o erro "You are not authorized to perform this operation" lançado por uma operação de API?
Causa: o par de AccessKey do usuário RAM não tem as permissões necessárias.
Solução: conceda as permissões necessárias ao usuário RAM. Para mais informações, consulte Manage RAM user permissions.
Por exemplo, se o erro "You are not authorized to perform this operation" for lançado pela operação de API SendMessageToGlobe, crie a seguinte política personalizada para conceder as permissões necessárias ao usuário RAM:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "dysms:SendMessageToGlobe", "Resource": "*" } ] } -
Como tratar o erro "System.UnretryableException: One or more errors occurred" lançado por uma operação de API?
Causa: o endpoint especificado não é compatível com esta operação de API.
Solução: especifique um endpoint compatível e tente novamente. Para mais informações, consulte Configure endpoints.
-
Como tratar o erro "ErrorCode":"InvalidAccessKeyId.NotFound","ErrorMessage":"Specified access key is not found" lançado por uma operação de API?
Causa: o par de AccessKey não foi passado corretamente.
Solução: verifique se o par de AccessKey está sendo passado corretamente durante a inicialização do client.
Environment.GetEnvironmentVariable("XXX")lê o valor deXXXa partir das variáveis de ambiente.
Para mais informações sobre como tratar erros do SDK, consulte .NET SDK FAQ.