使用TMDbLib 1.9.2调用TMDB API遇连接异常及配置错误求助
问题
使用TMDbLib 1.9.2(此前因报错升级至此版本)获取电视剧集信息,之前一直正常运行,目前部分功能仍可用且已确认API Key有效。
- 创建TMDbClient实例时,
client.Config抛出System.InvalidOperationException但未触发异常; - 调用
var NewEpisode = client.GetTvEpisodeAsync(TMDBid, SeasonNumber, Epnum).Result;时出现嵌套异常:
Inner Exception 1: HttpRequestException: An error occurred while sending the request. Inner Exception 2: WebException: The underlying connection was closed: An unexpected error occurred on a receive. Inner Exception 3: IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. Inner Exception 4: SocketException: An existing connection was forcibly closed by the remote host
网络速度正常,请问这些问题是否相关?该如何解决?
解决方案
问题关联性判断
这两个问题大概率相关。client.Config的异常说明初始化阶段就存在配置或网络层面的隐性问题,后续调用GetTvEpisodeAsync时的连接被强制关闭,本质都是TMDbLib与TMDB服务器的通信出现了底层故障。
具体解决步骤
强制启用TLS 1.2+
TMDB服务器已不再支持旧版TLS协议,TMDbLib 1.9.2默认可能未指定高版本TLS。在创建TMDbClient前添加以下代码:System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls13;这是此类连接被强制关闭问题的最常见原因,即使网络快也会因协议不匹配被服务器拒绝。
避免同步阻塞异步方法
调用GetTvEpisodeAsync().Result会导致线程阻塞,可能引发死锁或通信异常,建议改用异步await模式:var NewEpisode = await client.GetTvEpisodeAsync(TMDBid, SeasonNumber, Epnum);同步阻塞会打乱TMDbLib内部的HTTP请求调度,加重连接异常概率。
清理并重新初始化TMDbClient
client.Config的异常说明实例初始化不完整,建议销毁现有实例,重新创建并主动加载配置:var client = new TMDbClient("你的API Key"); // 主动加载配置,避免延迟初始化的隐性问题 await client.GetConfigAsync();主动调用
GetConfigAsync可提前暴露初始化阶段的问题,而非隐性抛出异常。检查本地防火墙/代理设置
即使网络快,本地防火墙、杀毒软件或代理可能拦截TMDbLib的HTTPS请求,导致连接被强制关闭。可临时关闭相关软件测试,或把程序加入防火墙白名单。
内容的提问来源于stack exchange,提问作者Holly
相关产品推荐
相关产品推荐

