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

代码调用REST API遇AuthenticationException:UntrustedRoot问题求助

问题分析与解决思路

你的异常和Basic Auth认证无关,核心原因是目标服务的SSL证书未被你的系统信任:Postman默认会自动跳过这类证书链校验错误,但.NET的HttpClient默认启用严格的证书验证规则,所以才会抛出UntrustedRoot异常。

以下是具体解决思路:

1. 临时方案(仅开发/测试环境)

如果是开发调试阶段,不想折腾证书导入,可以临时让HttpClient跳过证书校验(严禁用于生产环境,会带来严重安全风险):
修改HttpClient的初始化逻辑,添加自定义证书验证回调:

// 初始化HttpClient时配置Handler
var handler = new HttpClientHandler();
// 强制信任所有证书(仅测试用)
handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true;
var _client = new HttpClient(handler);

2. 正式环境推荐方案

情况A:目标服务用内部CA颁发的证书

把内部CA的根证书导入到本地机器的「受信任的根证书颁发机构」存储中:

  • 打开「管理计算机证书」(可以通过运行certlm.msc打开)
  • 找到「受信任的根证书颁发机构」→「证书」
  • 右键导入根证书,按照向导完成操作

导入后,系统和.NET应用会自动信任该CA颁发的所有证书,无需修改代码。

情况B:目标服务用自签名证书

直接把该服务的证书导入到「受信任的根证书颁发机构」(不推荐长期使用,建议换成内部CA颁发的证书),步骤同上。

3. 代码优化建议

你当前用.Result阻塞异步方法,可能导致死锁问题,建议改成异步等待:

var httpResponse = await _client.GetAsync(Url);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:03:32