Linux:如何通过Microsoft.PowerPlatform.Dataverse.Client.Dynamics软



CRM Dynamics 365 v9.1 on-premise.

Linux, Mac OS

Microsoft为Dynamics 365 v9提供了官方NuGet软件包。x。我已经用了好几年了。但是它们只适用于。net Framework(不适用于。net Core/5/6)。

也存在官方的Microsoft.PowerPlatform.Dataverse.Client.Dynamics包。它仍然是预览,但它也可以用于。net Core/5/6(根据它的文档)。

我写了一些。net 6应用程序与CRM Dynamics 365 v.9通信。以后会发布到docker镜像中

现在我通过Dynamics Web API组织通信:我创建HttpClientNTLM身份验证。对于连接,我使用login和password(它们存储在系统环境变量中)。在Mac OS上运行良好:

static HttpClient CreateCrmHttpClient(string domain, string crmWebApiUrl, string authType, string crmLogin, 
string crmPassword, Guid? callerId)
{
var uri = new Uri(crmWebApiUrl);
var credentialsCache = new CredentialCache
{{uri, authType, new NetworkCredential(crmLogin, crmPassword, domain)}};
var handler = new HttpClientHandler {Credentials = credentialsCache};
var httpClient = new HttpClient(handler) {BaseAddress = uri, Timeout = new TimeSpan(0, 2, 0)};
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
httpClient.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0");
httpClient.DefaultRequestHeaders.Add("OData-Version", "4.0");
httpClient.DefaultRequestHeaders.Add("Prefer", "odata.include-annotations="*"");
if (callerId != null)
{
httpClient.DefaultRequestHeaders.Add("MSCRMCallerID", callerId.Value.ToString());
}
return httpClient;
}

使用例子:

string domain = "MyCompany";
string crmWebApiUrl = "https://crm-dev.MyCompany.ru:456/MyCompany/api/data/v9.1/";
string crmLogin = Environment.GetEnvironmentVariable("CrmLogin");
string crmPassword = Environment.GetEnvironmentVariable("CrmPassword");
Guid callerId = Guid.Parse("81CF7EFF-A996-44C2-8710-06E8177586C2"); // J.Smith
string authType = "NTLM";    
using (var httpClient = CreateCrmHttpClient(domain, crmWebApiUrl, authType, crmLogin, crmPassword, callerId)) {
// ...
}

我还想学习如何使用Microsoft.PowerPlatform.Dataverse.Client.Dynamics软件包与CRM进行沟通。但是我在连接CRM时有个问题。它不提供通过NTLM身份验证连接到CRM的功能。我试着与其他不同的方法联系,但没有成功(我学习了它的例子)。

我需要通过Microsoft.PowerPlatform.Dataverse.Client.Dynamics软件包使用连接到CRM Dynamics 365 v9.1的工作代码示例。我指的是Linux或Mac上的代码示例。

有人有这样的经历吗?我真的很欣赏一个简单的工作代码示例!非常感谢。

据我了解,从2022年4月1日起,微软已经对微软Dataverse的身份验证方法做了一些改变。他们不再。你的authType不工作了。参考第二个链接。我个人使用ClientSecret,它与Dynamics 365 SDK Version 9.1Microsoft.PowerPlatform.Dataverse.ClientNuget Package Version 1.0.1连接良好。您可以尝试AD而不是NTLM作为每秒链接,以获得authType参数的有效选项。

参考:使用Microsoft Dataverse进行Office365身份验证

参考:使用XRM工具中的连接字符串连接到Microsoft Dataverse

最新更新