生产环境调用eSendex SMS服务时出现‘Unable to connect to remote server’错误求助
解决eSendex SMS服务生产环境连接失败问题
排查步骤
获取eSendex服务的网络端点
即使SDK未直接暴露服务器信息,可通过以下方式获取:- 抓包分析:在开发/预生产环境用Fiddler、Wireshark等工具捕获SDK发起的请求,提取目标域名、IP及端口(通常为HTTPS的443端口)。
- 反编译SDK:用ILSpy等工具反编译SDK的DLL文件,查找内部配置的API端点地址。
- 官方咨询:直接联系eSendex技术支持,获取生产环境需访问的服务器地址和端口列表。
验证生产环境网络连通性
拿到端点信息后,在生产服务器执行以下测试:- 域名解析测试:
ping <eSendex域名>,确认域名能正常解析到IP。 - 端口连通性测试:用PowerShell命令
Test-NetConnection <eSendex域名> -Port 443,若返回TcpTestSucceeded : True则端口通畅,否则为防火墙拦截。
- 域名解析测试:
解决方案
配置防火墙出站规则
确认是防火墙拦截后,联系运维团队添加规则:允许生产服务器向eSendex的目标域名/IP的443端口发起HTTPS请求,若有多个备用端点,需全部加入白名单。检查代理配置
生产环境若有代理服务器,需确认SDK是否适配:- 在SDK初始化代码中手动设置代理,示例:
var esendexClient = new EsendexClient(); esendexClient.Proxy = new WebProxy("http://你的代理服务器地址:端口"); - 若系统有默认代理,确保SDK能自动读取(.NET框架默认会加载系统代理,但部分SDK需手动开启该功能)。
- 在SDK初始化代码中手动设置代理,示例:
强制指定TLS版本
部分生产环境禁用了TLS 1.0/1.1,而eSendex可能要求TLS 1.2及以上版本,可在代码中添加:ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13;排查DNS解析异常
执行nslookup <eSendex域名>,对比开发环境的解析结果,若IP不一致或无法解析,需配置正确的DNS服务器,或临时添加hosts映射测试。
内容的提问来源于stack exchange,提问作者Lokesh Naik
相关产品推荐
相关产品推荐

