我正在使用 Microsoft.PowerPlatform.Dataverse.Client NuGet 包 (1.1.32) 连接到我们的 Dynamics 365 应用程序。这是一个 .NET 7 应用程序。我们有一个较旧的 .NET Framework 应用程序可以成功使用 CrmServiceClient,但在较新的 .NET 版本上使用新库时,它无法使用 FetchXML 查询来查询数据。
using var serviceClient = new ServiceClient(connectionString);
var id = serviceClient.GetMyUserId();
string fetchXML = @"<fetch top='5'><entity name='account'><attribute name='name' /></entity></fetch>";
var queryResult = serviceClient.GetEntityDataByFetchSearch(fetchXML);
起作用的是前两行。我可以连接到 Dynamics,并且对 GetMyUserId() 的调用成功,但使用 FetchXML 语法(使用来自 learn.microsoft.com 的示例)返回 null。
在检查 ServiceClient 对象时,我看到 LastException 属性中有一个值:
“无法从程序集“System.Web,版本 4.0.0.0...”加载类型“System.Web.PreApplicationStartMethodAttribute”...”
我尝试使用 Visual Studio 中的“添加 COM 引用”来添加 System.Web DLL,但失败了,可能是因为版本 4 和 7 之间存在一些严重的 .NET 兼容性问题。我不知道是否此错误是 FetchXML 查询失败或失败的原因 - 也许相关,也可能不相关。
所以这个问题实际上是两个:
我从未找到此问题的解决方案 - 与 Dynamics CRM 的连接总是失败。为了解决这个问题,我所做的是将数据导入到我们的 Azure SQL 数据库中,然后能够毫无问题地将其从 Azure 提取到我们的 Web 应用程序中。