常见问题

更新时间:

本文档旨在帮助开发者快速接入和使用.NET SDK,重点解答使用过程中遇到的常见问题,确保开发者能够准确且高效地进行相关操作。

环境检查

确保 .NET语言环境已经正确安装,最低要求net framework >= 4.5 或 .Net Core >= 2.0。

问题列表

问题1:代码测试过程中提示未能获取正确的凭证(Access Key ID 和 Access Key Secret)。

此问题主要原因是未正确设置Access Key ID和Access Key Secret的环境变量,或在测试中将这些值误设为“null”。

说明

System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")和System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),表示是从环境变量中获取ALIBABA_CLOUD_ACCESS_KEY_ID及ALIBABA_CLOUD_ACCESS_KEY_SECRET的值。

  • 检查您的环境变量中是否配置有ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。

  • 在终端(Linux/macOS)或单击开始(或快捷键:Win+R)>运行(输入 cmd)>确定(或按 Enter 键),打开命令提示符(Windows),执行以下命令。若返回正确的AccessKey,则说明配置成功。如果返回为空或错误,请尝试重新设置,具体操作请参见设置访问凭据

Linux/macOS

echo $ALIBABA_CLOUD_ACCESS_KEY_ID
echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET

Windows

echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%

问题2:运行时,提示“TimeoutException...”

此类问题的最简解决方案是增加适当的超时配置,具体如下:

说明

超时配置优先级为:RuntimeOption配置->Client配置->默认,优先级依次降低。

public static void Main(string[] args)
{
    AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
    {
         // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
        AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
        // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
    };
    // Client 代理参数设置
    // 连接超时默认 5 * 1000 毫秒
    config.ConnectTimeout = connectionTimeoutMillis;
    // 读超时默认 10 * 1000 毫秒
    config.ReadTimeout = readTimeoutMillis;

    config.Endpoint = "ecs-cn-hangzhou.aliyuncs.com";
    AlibabaCloud.SDK.Ecs20140526.Client client = new AlibabaCloud.SDK.Ecs20140526.Client(config);

    // 运行时参数设置,仅对使用了该运行时参数实例的请求有效
    RuntimeOptions runtimeOptions = new RuntimeOptions();
    runtimeOptions.ConnectTimeout = connectionTimeoutMillis;
    runtimeOptions.ReadTimeout = readTimeoutMillis;

    DescribeInstancesRequest request = new DescribeInstancesRequest();
    // 通过 SDK Core 执行实际的 Http 请求将返回的结果序列化为 SDK 的 Response 结构
    var response = client.DescribeInstancesWithOptions(request, runtimeOptions);
    System.Console.WriteLine(response.Body.TotalCount);
}

问题3:运行时,提示“Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'key')”

此问题的原因是,Credentials的历史版本存在使用默认凭证链方式的缺陷。建议升级Aliyun.Credentials到1.3.4及以上。

dotnet add package Aliyun.Credentials

C#语言基础异常自查表

报错信息

错误原因

解决方案

SocketException

发生与套接字相关的错误,如连接超时、连接被关闭等。

检查网络连接的可用性(可通过curl指令验证),并确保目标主机和端口号正确。

HttpRequestException

发生与 HTTP 请求相关的错误,如无法连接到服务器、请求超时等。

检查网络连接和服务器状态,确保服务器正常运行。可以使用 try-catch 块来捕获 HttpRequestException 并处理异常情况。

ProtocolViolationException

发生与网络协议相关的错误,如无效的 HTTP 请求或响应。

检查网络协议的规范,确保请求和响应符合协议要求。可以使用条件语句或异常处理机制来处理协议违规异常。

TimeoutException

操作在指定的时间内未完成,达到了超时时间。

增加操作的超时时间,或优化操作的性能以确保在指定的时间内完成。可以使用条件语句或异常处理机制来处理超时异常。

DNS resolution failure

无法解析域名或无效的域名。

检查域名的正确性,并确保 DNS 服务器可用。可以使用条件语句或异常处理机制来处理 DNS 解析失败。

技术支持

以上问题的解决方案旨在帮助您更友好地使用阿里云SDK。如果您在使用过程中遇到其他问题,请通过以下方式与我们联系: