XmlDocument.Load:无法创建SSL / TLS安全通道

时间:2014-10-30 10:08:43

标签: c# .net ssl httpwebrequest xmldocument

我有简单的代码,类似于我在我的应用程序中散布的代码:

new XmlDocument().Load("https://mybookingpal.com/xml/rest/product/organization/5?pos=" + "a3a2e74b809e0e87");

以上是新域名,旧域名是:

new XmlDocument().Load("https://razor-cloud.com/xml/rest/product/organization/5?pos=" + "a3a2e74b809e0e87");

您可以尝试使用两个Urls并查看它们是否正常工作/生成相同的XML结果。

SSL中可能发生了某些变化,现在阻止了.Load()的运行。我有两个问题:

  1. 导致失败的原因是什么,我可以尝试在一个地方修复它(在API服务器上)?
  2. 如何修复客户端代码?

2 个答案:

答案 0 :(得分:0)

我有同样的问题。事实证明,这是由

中定义的xml DTD引起的
<!DOCTYPE>

检查xml文件标题

<!DOCTYPE xxx SYSTEM "url">

复制url并粘贴到浏览器中,然后运行Fiddler来查看正在使用的协议。

我的情况是,我正在运行本地服务器来解析使用来自第三方的DTD的xml文件。我的本地服务器运行在Tls11或Tls12上,而第三方DTD(URL)只能通过Ssl或Tls10进行通信。因此无法握手。

我的解决方案很简单,只需添加以下行作为临时解决方案即可:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;

答案 1 :(得分:0)

这似乎与我遇到的问题相同,与此链接相同: Form Authentication and XmlDocument.Load

我已经使用表单身份验证和Https登录,我希望不需要其他身份验证。但是,新的XmlDocument()。Load()再次加载登录页面。由于此页面是html,因此会引发错误的xml格式异常。