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

使用Genexus 17(C#)命令行调用API遇SSL/TLS安全通道创建失败

解决命令行程序SSL/TLS安全通道创建失败问题

1. 使用app.config配置(.NET Framework环境)

命令行程序的配置文件为app.config(编译后会生成与程序同名的.exe.config文件,需放在可执行文件同一目录下),添加以下配置项,和Web端web.config的配置逻辑一致:

方式一:启用强加密算法

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=false" />
  </runtime>
  <system.net>
    <settings>
      <servicePointManager checkCertificateRevocationList="false" />
    </settings>
  </system.net>
</configuration>

方式二:强制指定SSL/TLS版本

<configuration>
  <appSettings>
    <add key="System.Net.ServicePointManager.SecurityProtocol" value="Tls12,Tls13" />
  </appSettings>
</configuration>

2. 代码层面强制设置(配置文件不生效时)

如果配置文件方式无效,可在程序初始化阶段(比如入口逻辑开头)添加C#代码,强制指定SSL/TLS版本:

System.Net.ServicePointManager.SecurityProtocol = 
    System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls13;
// 仅测试环境可选:禁用证书吊销检查,生产环境不建议开启
System.Net.ServicePointManager.CheckCertificateRevocationList = false;

在Genexus中,可将这段代码放在程序的启动事件或首次调用API的逻辑中。

3. 排查环境与权限差异

  • 命令行程序的运行账户和Web面板的运行账户(如IIS应用池账户)可能不同,需确认该账户是否有权限访问目标API,以及能否读取证书存储中的相关证书(若API要求客户端证书)。
  • 检查命令行运行环境的系统SSL/TLS设置,确保已开启TLS 1.2或TLS 1.3版本(可通过Windows注册表或组策略验证)。

内容的提问来源于stack exchange,提问作者Falchini Cesar Adolfo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 04:45:00