获取"基础连接已关闭,发送时发生意外错误"调用CompleteSale方法时出错

时间:2017-10-09 16:34:37

标签: c#-2.0 ebay-api

自从2周(02/10)以来,我通过eBay_Service .NET SDK(v967)调用API方法CompleteSale时出现问题。
当ERP尝试发送一些关于一个订单的更新信息时,它会收到以下异常:

  

基础连接已关闭,发送

时发生意外错误

所以我没有得到API的回复。
有不止一件奇怪的事情:

  • 在后台有一些批处理,使用相同的.dll和它们 工作得很好;
  • 重新启动服务器后,第一次调用" CompleteSale"工作正常;
  • 通过" regsrv"再次注册.dll后命令,它的工作原理 好一天;
  • 所有使用ERP的操作员都通过连接到服务器 远程桌面,所有人都注意到了这个问题。相反,如果我 从我公司的办公室连接,一切正常;
  • 我试图将超时时间增加到360秒(从60秒开始)并且没有任何变化。

ERP正在开发中(OpenGL),所以我无法解决设置" KeepAlive" to" false&#34 ;,明确设置证书(Tsl1.1 | Tsl1.2)或在.net端进行其他干预。我错了,可以从源代码中完成SDK。

2 个答案:

答案 0 :(得分:0)

我已经检查了api服务器上的安全协议,发现了" SSL3"不再支持,而.NET 2.0中ServicePointManager.SecurityProtocol的默认值为SSL3。
我通过在" eBayXmlAPIInterfaceService"中添加此修补程序解决了这个问题。 SDK中的类源代码:

//768  = Tsl1.1,  3070 = Tsl1.2
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072 |
(SecurityProtocolType)768;

HttpWebRequest http = (HttpWebRequest) WebRequest.Create(this.Url);
http.Method = "POST";
http.ContentType = "text/xml";
http.ContentLength = data.Length;
http.KeepAlive = false;

微软可能已发布修补程序以解决此问题,但服务器自2015年以来未经更新。
此外,我已经在我们用来获取/发布请求的程序中复制了ABL应用程序中的.net代码:

DEF VAR w-tsl10 AS System.Net.SecurityProtocolType
w-tsl10 = CAST(System.Enum:ToObject(PROGRESS.Util.TypeHelper:GetType("System.Net.SecurityProtocolType":U), 192), System.Net.SecurityProtocolType).
ystem.Net.ServicePointManager:SecurityProtocol = w-tsl10.

答案 1 :(得分:0)

我正在使用betfair api并遇到此问题。经过研究,我发现了

System.Net.ServicePointManager.Expect100Continue = true;
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;