Integre o Alibaba Cloud SDK ao seu projeto .NET para simplificar chamadas de API e reduzir custos de manutenção. A integração envolve três etapas: instale o SDK, configure uma credencial de acesso e chamar 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
Faça login no SDK Center e selecione o serviço cujo SDK deseja utilizar. Neste exemplo, selecionamos o Short Message Service (SMS).
Na página Short Message Service e escolha 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 da OpenAPI exige credenciais de acesso, como AccessKey ou Security Token Service (STS) token. Armazene as credenciais em variáveis de ambiente para evitar vazamentos. Para melhores práticas, consulte Usar credenciais de acesso com segurança. Os exemplos abaixo utilizam as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET.
Método de configuração no Linux e macOS
Configure variáveis de ambiente usando o comando export
Uma variável de ambiente temporária definida com o comando export é válida apenas para a sessão atual. A variável é limpa quando a sessão termina. Para retenção de longo prazo (LTR), adicione o comando export ao arquivo de configuração de inicialização do seu sistema operacional.
-
Configure o AccessKey ID e pressione Enter.
# Replace yourAccessKeyID with your AccessKey ID. export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID -
Configure o AccessKey secret e pressione Enter.
# Replace yourAccessKeySecret with your AccessKey secret. export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret -
Verifique a configuração.
Execute o comando
echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Se o retorno for o AccessKey ID correto, a configuração foi bem-sucedida.
Método de configuração no Windows
Usar a interface gráfica do usuário (GUI)
-
Procedimento
As etapas a seguir descrevem como defina variáveis de ambiente usando a GUI no Windows 10.
Na área de trabalho, clique em com o botão direito em Este Computador e escolha Propriedades > Configurações avançadas do sistema > Variáveis de Ambiente > Novo em Variáveis do sistema ou Variáveis de usuário. Em seguida, conclua a configuração.
Variável
Valor de exemplo
AccessKey ID
Nome da variável: ALIBABA_CLOUD_ACCESS_KEY_ID
Valor da variável: yourAccessKeyID
AccessKey Secret
Nome da variável: ALIBABA_CLOUD_ACCESS_KEY_SECRET
Valor da variável: yourAccessKeySecret
-
Testar a configuração
Clique em Iniciar (ou use o atalho de teclado Win+R), clique em Executar, insira
cmde 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 o retorno for o AccessKey correto, a configuração foi bem-sucedida.
Usar o prompt de comando (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 esse parâmetro ao defina uma variável de ambiente de usuário. -
Testar a configuração
Clique em Iniciar (ou use o atalho de teclado Win+R), clique em Executar, insira
cmde 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 o retorno for o AccessKey correto, a configuração foi bem-sucedida.
Usar o Windows PowerShell
No PowerShell, defina 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 defina 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)
Defina 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 o retorno for o AccessKey correto, a configuração foi bem-sucedida.
Usar o SDK
Este exemplo chama a operação SendMessageToGlobe do Short Message Service (SMS). Para mais informações sobre SendMessageToGlobe, consulte SendMessageToGlobe.
1. Inicializar 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. Existem vários métodos de inicialização disponíveis. Este exemplo utiliza um par de AccessKey. Para mais informações, consulte Gerencie credenciais de acesso.
Objetos client (como instâncias do Dysmsapi Client) são thread-safe. Não é necessário crie uma instância para cada thread.
Evite crie objetos client frequentemente com a palavra-chave new — isso desperdiça recursos e degrada o desempenho. Utilize o padrão singleton para garantir apenas uma instância de Client por credencial de acesso e
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. 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. Iniciar a requisição
Chame a operação de API usando o método <nome da operação de API>WithOptions. Esse método aceita 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 Configuração avançada.
Se uma operação de API não tiver parâmetros de requisição, apenas o parâmetro de runtime será necessário. Por exemplo, somente o parâmetro de runtime é necessário ao chamar a operação DescribeCdnSubList.
O objeto de resposta é nomeado <nome da operação de API>Response. Por exemplo, o objeto de resposta para a 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. Tratar erros
O SDK classifica exceções em dois tipos:
TeaUnretryableException: Geralmente causada por erros de rede. Reportada 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 Tratamento de exceções.
Implemente o tratamento adequado de exceções — incluindo relatórios, logs e novas tentativas — para garantir a estabilidade do sistema.
Clique em para visualize o código de exemplo completo
Upload de arquivos com a operação Advance
Ao usar o Image Search ou a Visual Intelligence API (VIAPI) para processar ou fazer upload de imagens locais, a API padrão não suporta uploads diretos de arquivos. Utilize a operação Advance para enviar arquivos por meio de streams. O serviço armazena temporariamente os arquivos enviados no OSS (região padrão: cn-shanghai) e os lê novamente quando necessário. O exemplo a seguir chama a operação DetectBodyCount da VIAPI:
Arquivos temporários do OSS são limpos periodicamente.
-
Inicializar um cliente de requisição
Especifique tanto o
RegionIdquanto oendpointdo serviço. ORegionIddefine a região do OSS para armazenamento temporário de arquivos. Se oRegionIdnão for definido, o serviço 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. }; -
Iniciar uma 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 lidar com o erro "You are not authorized to perform this operation" retornado por uma operação de API?
Causa: O par de AccessKey do usuário RAM não possui as permissões necessárias.
Solução: Conceda as permissões necessárias ao usuário RAM. Para mais informações, consulte Gerencie permissões de usuário RAM.
Por exemplo, se a operação de API SendMessageToGlobe retornar o erro "You are not authorized to perform this operation", 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 resolver o erro "System.UnretryableException: One or more errors occurred" retornado por uma operação de API?
Causa: O endpoint especificado não é suportado por esta operação de API.
Solução: Especifique um endpoint suportado e tente novamente. Para mais informações, consulte Configure endpoints.
-
Como tratar o erro "ErrorCode":"InvalidAccessKeyId.NotFound","ErrorMessage":"Specified access key is not found" retornado por uma operação de API?
Causa: O par de AccessKey não foi passado corretamente.
Solução: Verifique se o par de AccessKey foi passado corretamente durante a inicialização do client. O método
Environment.GetEnvironmentVariable("XXX")lê o valor deXXXdas variáveis de ambiente.
Para mais informações sobre como tratar erros do SDK, consulte Perguntas frequentes sobre o SDK para .NET.