如何使用.NET Core 6.0创建连接Microsoft Dynamics 365 2016本地版的Web API?
解决.NET Core 6.0连接Dynamics 365 2016本地版Web API的问题
你遇到的核心问题是Microsoft.CrmSdk.CoreAssemblies、Microsoft.Xrm.Sdk、Microsoft.Xrm.Client这些旧包仅针对.NET Framework开发,完全不支持.NET Core/.NET 5+。要在.NET Core 6.0中实现连接,必须改用官方提供的跨平台替代方案:
步骤1:替换兼容的NuGet包
卸载所有不兼容的旧SDK包,安装微软官方维护的跨平台客户端包:
- 使用NuGet包管理器安装:
Microsoft.PowerPlatform.Dataverse.Client - 或用.NET CLI命令:
dotnet add package Microsoft.PowerPlatform.Dataverse.Client
这个包支持.NET Core 3.1及以上版本,完全兼容.NET Core 6.0,并且可以无缝对接Dynamics 365本地版(包括2016版本)的Web API。
步骤2:编写连接代码示例
针对Dynamics 365 2016本地版,使用ServiceClient类实现连接,示例代码如下:
using Microsoft.PowerPlatform.Dataverse.Client; using Microsoft.Xrm.Sdk; var serviceUrl = "http://your-crm-server-url/api/data/v8.0/"; // 2016对应Web API版本为v8.0 var credentials = new System.Net.NetworkCredential("username", "password", "domain"); // 初始化服务客户端 using var serviceClient = new ServiceClient( serviceUrl, credentials, useUniqueInstance: true, useSsl: false // 如果本地版启用了HTTPS则设为true ); if (serviceClient.IsReady) { // 验证连接成功,执行操作示例:查询账户记录 var query = new QueryExpression("account") { TopCount = 5, ColumnSet = new ColumnSet("name", "accountid") }; var results = serviceClient.RetrieveMultiple(query); foreach (var account in results.Entities) { Console.WriteLine($"账户名称:{account["name"]},ID:{account.Id}"); } } else { Console.WriteLine($"连接失败:{serviceClient.LastError}"); }
关键注意事项
- Web API版本匹配:Dynamics 365 2016对应的Web API版本是
v8.0,请确保服务URL中的版本号正确。 - 认证方式:本地版通常使用AD域账号认证,直接用
NetworkCredential传入域账号信息即可。如果启用了IFD(互联网部署),则需要调整认证逻辑。 - 权限验证:确保使用的账号拥有Dynamics 365系统的访问权限(至少是基础用户角色)。
- 替代旧API:原
Microsoft.Xrm.Client中的组织上下文(如OrganizationServiceContext),可以通过serviceClient.CreateOrganizationService(null)获取IOrganizationService实例后,继续使用熟悉的XRM SDK操作逻辑。
内容的提问来源于stack exchange,提问作者Programming Lover
相关产品推荐
相关产品推荐

