Respostas para dúvidas comuns sobre o Alibaba Cloud SDK for .NET, incluindo configuração de AccessKey, erros de timeout e problemas com credenciais.
Pré-requisitos
.NET Framework 4.5+ ou .NET Core 2.0+ instalado.
Visão geral
Erros de configuração de AccessKey
O erro a seguir indica um par de AccessKey incorreto:
Alibaba Cloud SDK V2.0: Unhandled exception. Tea.TeaException: Please set up the credentials correctly. If you are setting them through environment variables, please ensure that ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set correctly.
Alibaba Cloud SDK V1.0: Unhandled exception. System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. (Parameter 'Access key ID cannot be null.')
Soluções:
-
Verifique se as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET estão definidas:
Linux ou macOS
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRETWindows
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%Se o comando retornar um par de AccessKey válido, as variáveis de ambiente estarão corretas. Caso contrário, configure-as novamente. Para mais informações, consulte Configurar variáveis de ambiente no Linux, macOS e Windows.
-
Verifique se há erros relacionados ao AccessKey no código.
Exemplo inválido:
AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = Environment.GetEnvironmentVariable("yourAccessKeyID"), AccessKeySecret = Environment.GetEnvironmentVariable("yourAccessKeySecret"), };Exemplo válido:
AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"), AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), };NotaEssas chamadas leem o AccessKey ID e o Secret das variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET.
ImportantePara evitar vazamentos de AccessKey, não escreva o par de AccessKey em texto simples diretamente no código.
Erros de TimeoutException
Timeouts em chamadas de API podem ter várias causas. A seguir, apresentamos as causas comuns e suas soluções.
Problemas de conectividade de rede
A solicitação de API não alcança o servidor devido a uma conexão de rede com falha ou instável.
Soluções:
Use ping ou curl para testar a conectividade com o endpoint do serviço. Por exemplo, se uma chamada de API de SMS atingir o timeout, execute ping dysmsapi.aliyuncs.com ou curl -v https://dysmsapi.aliyuncs.com.
Se o comando atingir o timeout ou não retornar resposta, verifique políticas de bloqueio no firewall local ou no roteador.
-
Caso receba uma resposta, defina um período de timeout apropriado. Para mais informações, consulte Configurar um período de timeout. Código de exemplo:
// Configure the timeout period for connection requests by using runtime parameters. The timeout period takes effect only for requests that use RuntimeOptions. RuntimeOptions runtimeOptions = new RuntimeOptions(); runtimeOptions.ConnectTimeout = connectionTimeoutMillis;
Tempo de processamento longo da solicitação de API
O tempo de processamento da solicitação de API excede o período de timeout de leitura.
Solução: Estenda o período de timeout de leitura. Para mais informações, consulte Configurar um período de timeout. Código de exemplo:
// Configure the timeout period for read requests by using runtime parameters. The timeout period takes effect only for requests that use RuntimeOptions.
RuntimeOptions runtimeOptions = new RuntimeOptions();
runtimeOptions.ReadTimeout = readTimeoutMillis;
ArgumentNullException: Value cannot be null
O pacote Aliyun.Credentials está desatualizado. Atualize para a versão mais recente:
dotnet add package Aliyun.Credentials
Exceções comuns em C#
|
Mensagem de erro |
Causa |
Solução |
|
SocketException |
Falha no nível de socket, como timeout de conexão ou encerramento inesperado. |
Execute cURL para verificar a conectividade de rede. Confirme se o host e a porta de destino estão corretos. |
|
HttpRequestException |
Falha no nível HTTP, como servidor inacessível ou timeout de solicitação. |
Verifique a conexão de rede e confirme se o servidor está em execução. Utilize um bloco try-catch para tratar essa exceção. |
|
ProtocolViolationException |
Falha no nível de protocolo, como uma solicitação ou resposta HTTP inválida. |
Verifique se a solicitação e a resposta estão em conformidade com os requisitos do protocolo. |
|
TimeoutException |
Uma operação atingiu o timeout. |
Aumente o período de timeout ou otimize o desempenho para garantir que a operação seja concluída dentro do limite. |
|
Falha na resolução de DNS |
O nome de domínio não pôde ser resolvido ou é inválido. |
Verifique o nome de domínio e confirme se o servidor DNS está acessível. |
Suporte técnico
Para outros problemas com o Alibaba Cloud SDK:
Grupo do DingTalk para suporte técnico: 60965016010.