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

.NET Core部署IIS后使用Cloudinary C# SDK上传图片SSL报错

错误根因

你遇到的RemoteCertificateNameMismatch错误,本质是生产服务器上的.NET程序在向Cloudinary API发起HTTPS请求时,收到的SSL证书的域名和请求的目标域名不匹配,导致SSL握手失败。本地运行正常是因为本地网络没有相关拦截、SDK域名解析逻辑无异常。


修复步骤

步骤1:基础环境排查

  • 确认生产服务器的系统时间与时区配置正确,时间偏差超过5分钟会触发SSL证书校验失败
  • 排查生产服务器的防火墙、WAF、代理服务器配置,确认没有对Cloudinary的HTTPS请求做SSL中间人解密(这类操作会替换原始证书,导致域名不匹配)
  • 升级CloudinaryDotNet NuGet包到最新正式版,旧版本SDK可能存在硬编码旧API域名的问题

步骤2:显式指定Cloudinary API地址

修改你的控制器代码,初始化Cloudinary后显式指定API根地址,避免SDK因为环境配置问题解析到错误域名:

Cloudinary cloudinary = new Cloudinary(account);
cloudinary.Api.Secure = true;
// 新增这行,显式指定Cloudinary官方API地址
cloudinary.Api.ApiBaseAddress = "https://api.cloudinary.com";

同时删除代码中重复的cloudinary.Api.Secure = true;语句,避免冗余。

步骤3:检查IIS配置

  • 确认IIS站点对应的应用程序池.NET CLR版本与本地开发环境一致
  • 确认应用程序池运行身份默认使用NetworkService,若使用自定义身份,需要给该身份开放系统根证书存储的读取权限

临时应急方案(不推荐长期使用)

如果确认是服务器内部网络不可避免的SSL拦截导致的问题,可以临时添加证书校验跳过逻辑,仅针对Cloudinary请求关闭证书校验(会降低通信安全性,仅临时应急使用):
在应用启动时(Program.cs/Startup.cs)添加如下配置:

ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) =>
{
    // 仅放行Cloudinary相关请求的证书错误
    if (sender is HttpWebRequest req && req.RequestUri.Host.EndsWith("cloudinary.com"))
    {
        return true;
    }
    // 其他请求保留原有校验逻辑
    return sslPolicyErrors == SslPolicyErrors.None;
};

内容的提问来源于stack exchange,提问作者Blu System Pavia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:36:00