我们需要从c#
.Net framework 4.5.2
开发的应用程序中,从Dynamics客户参与中检索数据。我们知道,对于v9.0的动态Web API .Net framework 4.6.2
,需要更高版本。我们需要知道的是,是否有任何方法可以使用我们的应用程序要求(也许使用其他API版本)从Dynamics客户参与中查询数据,因为由于其他原因我们无法更改.Net
版本。我们也很感谢帮助找到有关此文档的帮助。
我们尝试使用HttpClient
进行API调用。问题出在使用Microsoft.IdentityModel.Clients.ActiveDirectory
的身份验证步骤中。
答案 0 :(得分:0)
最可能的原因是您使用的TLS版本。 Dynamics 365需要TLS 1.2。
.p 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脚本更新注册表项。这必须在运行该应用程序的每个设备上完成。 (但是,天蓝色可能会带来问题)。
64位
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
32位
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
第一种选择是迄今为止最简单的方法。