You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Dapr C# SDK调用GetSecretAsync获取Azure Key Vault密钥失败

问题分析与解决方案

核心错误原因

从内部异常SocketException (10061): No connection could be made because the target machine actively refused it可以明确:C# SDK尝试连接的端口无法建立连接,根源是端口配置不匹配:

  • Postman调用的是Dapr Sidecar的HTTP端口(默认3500),因此能正常获取密钥;
  • 代码中却将Dapr Client的HTTP Endpoint设为50001——这是Dapr Sidecar默认的gRPC端口,HTTP请求发送到gRPC端口会被直接拒绝。
    同时,Dapr Client默认优先使用gRPC通信,即使指定了HTTP Endpoint,也可能存在通信协议不匹配的问题。

修复步骤

1. 修正HTTP端口配置

将代码中的UseHttpEndpoint改为Dapr Sidecar的HTTP端口(默认3500,若启动时自定义了端口则用对应值):

var daprClient = new DaprClientBuilder()
    .UseHttpEndpoint("http://127.0.0.1:3500")
    .Build();

2. 显式指定HTTP通信(可选但推荐)

为确保SDK使用HTTP协议而非默认的gRPC,添加UseHttpCommunication():

var daprClient = new DaprClientBuilder()
    .UseHttpEndpoint("http://127.0.0.1:3500")
    .UseHttpCommunication()
    .Build();

3. 验证Sidecar启动参数

确认启动Dapr Sidecar时的端口配置,确保HTTP端口和代码中一致,例如启动命令:

dapr run --app-id your-app-id --dapr-http-port 3500 --dapr-grpc-port 50001

其中--dapr-http-port的值要和代码中的端口完全匹配。

4. 检查代理设置

确保本地回环地址(127.0.0.1、localhost)在no_proxy环境变量中,避免请求被代理拦截:

# Windows系统
set no_proxy=127.0.0.1,localhost

# Linux/macOS系统
export no_proxy=127.0.0.1,localhost

额外验证

修复连接问题后,可检查GetSecretAsync中的version_id是否正确对应Azure Key Vault中密钥的版本,避免后续出现密钥找不到的问题。

内容的提问来源于stack exchange,提问作者Neltech101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:05:42