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

Android模拟器调用ASP.NET Core API报TrustFailure认证错误如何解决?

问题根因说明

你遇到的CERTIFICATE_VERIFY_FAILED报错和项目选择的「无身份验证」模式没有关联,属于HTTPS证书信任问题:IIS Express默认会为本地站点生成自签名SSL证书,该证书仅在你的开发主机系统中被信任,安卓模拟器的系统信任列表中没有该证书,因此发起HTTPS请求时校验失败,请求还没到后端接口逻辑就被终端拦截了。

解决方案

方案1:开发环境临时跳过证书校验(仅适用于本地调试,禁止生产环境使用)

在Xamarin客户端的请求代码前添加全局证书校验绕过逻辑,跳过SSL证书校验步骤:

// 注意:仅本地开发调试可用,生产环境使用会存在严重安全风险
System.Net.ServicePointManager.ServerCertificateValidationCallback += 
    (sender, cert, chain, sslPolicyErrors) => true;

WebClient web = new WebClient();
try
{
     var data = web.DownloadData("https://192.168.1.233:44346/Item");
}
catch(Exception e)
{
     throw;
}

方案2:导入自签名证书到安卓模拟器(更规范的开发调试方案)

将开发机的IIS Express自签名证书导入到安卓模拟器的系统信任列表,无需修改业务代码:

  • 打开Windows证书管理器:按下Win+R输入certmgr.msc回车启动
  • 依次进入「受信任的根证书颁发机构」→「证书」,找到颁发者和名称均为localhost的IIS Express生成证书
  • 右键点击证书选择「所有任务」→「导出」,导出格式选择「DER编码二进制X.509(.CER)」,保存到本地
  • 将导出的CER文件拖入安卓模拟器,按照提示选择「用于VPN和应用」完成安装,之后请求即可正常通过证书校验

方案3:本地调试使用HTTP协议

如果不需要HTTPS,可直接切换为HTTP请求,规避证书问题:

  1. 修改ASP.NET Core项目配置:打开项目根目录下的launchSettings.json,找到IIS Express配置节点,记录对应的HTTP端口(或把sslPort设为0关闭HTTPS)
  2. 安卓9及以上版本默认禁止明文HTTP请求,需在安卓项目中添加网络安全配置:
    • 在Resources/xml目录下新建network_security_config.xml,配置允许对应开发IP的明文请求:
      <?xml version="1.0" encoding="utf-8"?>
      <network-security-config>
          <domain-config cleartextTrafficPermitted="true">
              <domain includeSubdomains="true">192.168.1.233</domain>
          </domain-config>
      </network-security-config>
      
    • 在AndroidManifest.xml的Application节点添加属性android:networkSecurityConfig="@xml/network_security_config"
  3. 客户端请求地址改为HTTP协议对应端口即可。
补充说明:命令行启动超时问题

你提到的用命令行启动项目超时,大概率是Kestrel默认仅绑定localhost,没有监听局域网IP,可在启动时指定监听地址解决:

dotnet run --urls http://0.0.0.0:5000;https://0.0.0.0:5001

启动后模拟器即可通过对应IP端口访问接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:45:07