使用 .Net 4.5.2 从动态客户参与中检索数据



我们需要从c#.Net framework 4.5.2年开发的应用程序从Dynamics客户参与中检索数据。我们知道,对于动态Web API v9.0,需要.Net framework 4.6.2或更高版本。我们需要知道的是,是否有任何方法可以使用我们的应用程序要求(可能使用另一个 API 版本(从动态客户参与查询数据,因为我们不能出于其他原因更改我们的.Net版本。我们也感谢帮助找到一些文档。

我们尝试使用HttpClient进行 API 调用。问题出在使用Microsoft.IdentityModel.Clients.ActiveDirectory的身份验证步骤中。

最可能的原因是您使用的 TLS 版本。TLS 1.2 是 Dynamics 365 所必需的。

.Net Framework 通过以下方式支持 TLS。

  • .Net Framework 4.0仅支持TLS 1.0
  • .Net Framework 4.5支持TLS 1.2,但只能通过显式设置 TLS 版本。(请参阅下面的代码示例(
  • .Net Framework 4.6及以上原生支持TLS 1.2

如果强制使用.Net Framework 4.5请在发出任何 HTTP 请求之前添加以下代码行。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

如果代码更改不是一个选项,则另一种方法是使用 PowerShell 脚本更新注册表项。这必须在运行该应用程序的每个设备上完成。(但是,Azure 可能会带来问题(。

64 位

Set-ItemProperty -Path 'HKLM:SOFTWAREWow6432NodeMicrosoft.NetFrameworkv4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord

32 位

Set-ItemProperty -Path 'HKLM:SOFTWAREMicrosoft.NetFrameworkv4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord

第一种选择是迄今为止最简单的方法。

最新更新