C# 使用.Net 4.5.2从Dynamics客户参与中检索数据

C# 使用.Net 4.5.2从Dynamics客户参与中检索数据,c#,.net,dynamics-crm,microsoft-dynamics,C#,.net,Dynamics Crm,Microsoft Dynamics,我们需要从c.Net framework 4.5.2中开发的应用程序中检索Dynamics客户参与的数据。我们知道,对于dynamics web API的v9.0,需要.Net framework 4.6.2或更高版本。我们需要知道的是,是否有任何方法可以使用我们的应用程序需求(可能使用另一个API版本)从dynamics客户参与中查询数据,因为我们无法出于其他原因更改.Net版本。我们也非常感谢您帮助我们找到相关文档 我们尝试使用HttpClient进行API调用。问题出在使用Microsof

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


我们尝试使用
HttpClient
进行API调用。问题出在使用Microsoft.IdentityModel.Clients.ActiveDirectory的身份验证步骤中。最可能的原因是您使用的TLS版本。Dynamics 365要求TLS 1.2

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

  • .Net Framework 4.0
    仅支持
    TLS 1.0
  • .Net Framework 4.5
    支持
    TLS 1.2
    ,但仅通过显式设置TLS版本。(参见下面的代码示例)
  • .netframework4.6
    及以上版本本机支持
    tls1.2
如果您被迫使用
.Net Framework 4.5
,请在发出任何HTTP请求之前添加以下代码行

ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12;
如果代码更改不是选项,那么另一种方法是使用PowerShell脚本更新注册表项。这必须在运行应用程序的每个设备上完成。(然而,Azure可能会带来一个问题)

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

第一个选项是目前为止最简单的方法。

您能提供一个代码示例和一个您收到的错误示例吗?不用担心