CRM 365 在每次呼叫时返回通信异常



我有一个调用CRM 365的服务。身份验证是使用 OAuth 或持有者令牌完成的。这就像一个魅力,但突然在每个调用中都会抛出一个通信异常。也许这是由于CRM版本更新到v9。

这就是我创建我的 IOrganizationService的方式:

var crmProxy = new OrganizationWebProxyClient(serviceUri, false)
{
HeaderToken = bearerToken
};

其中serviceUri类似于 https://mydomain.crm.dynamics.com/xrmservices/2011/organization.svc/web?SdkClientVersion=9.0.0.0

当我调用这个代理(如ExecuteRequestRetrieveMultiple(时,会抛出CommunicationException,并显示以下消息:

System.ServiceModel.CommunicationException:向 HTTP 发出 HTTP 请求时出错 https://mydomain.crm.dynamics.com/xrmservices/2011/organization.svc/web?SdkClientVersion=9.0.0.0。 这可能是由于服务器证书不是 在 HTTPS 情况下,使用 HTTP.SYS 正确配置。这也可以 由客户端和 之间的安全绑定不匹配导致 服务器。---> System.Net.WebException:底层连接 已关闭:发送时发生意外错误。--->System.IO.IOException:无法从传输中读取数据 连接:现有连接被遥控器强行关闭 主机。---> System.Net.Sockets.SocketException:现有连接 被远程主机强行关闭

我已经将 CRM SDK 程序集更新到版本 9.0.2.4。仍然不工作。

我能做什么?

我找到了解决方案。

Dynamics 365 v9.0 强制实施 TLS 1.2。要在应用程序中强制实施 TLS 1.2,您必须在发出请求之前调用以下内容:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

或者,您可以切换到 .Net 4.6 或更高版本。在这些版本中,TLS 1.2 是默认值。

最新更新