c# - Dynamics 365:为什么 .net6 控制台客户端出现“Xrm.Sdk WSDL”错误?

Mac 操作系统、.Net6、C# 10.0。

我总是在 .Net Framework Platform 上为 MS Dynamics 365 创建控制台客户端,没有任何问题。但现在我需要在 .Net Core 或更新的平台上做同样的事情(因为我需要稍后将它放入 Docker 容器中)。在这种情况下,我尝试使用 .Net6。

我创建了新的控制台应用程序并添加了 NuGet 包:

  • Microsoft.PowerPlatform.Dataverse.Client v0.6.6
  • System.Configuration.ConfigurationManager v6.0.0
  • System.ServiceModel.Primitives v4.9.0

我的简单 Program.cs 文件:

using System.Net;
using System.ServiceModel.Description;
using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Client;

namespace ConsoleAppExample
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "CRM console client";

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            var orgServiceUrl = "http://dev-crm-app02/MyCompany/XRMServices/2011/Organization.svc";
            var crmUserLogin = "myLogin";
            var crmUserPassword = "myPassword"; 

            var credentials = new ClientCredentials();
            credentials.UserName.UserName = crmUserLogin;
            credentials.UserName.Password = crmUserPassword;

            try
            {
                using (var orgService = new OrganizationServiceProxy(new Uri(orgServiceUrl),
                           null, credentials, null))
                {
                    RetrieveVersionRequest versionRequest = new RetrieveVersionRequest();
                    RetrieveVersionResponse versionResponse =
                        (RetrieveVersionResponse) orgService.Execute(versionRequest);

                    WhoAmIRequest whoAmIRequest = new WhoAmIRequest();
                    WhoAmIResponse whoAmIResponse = (WhoAmIResponse) orgService.Execute(whoAmIRequest);

                    Console.WriteLine($"\nOrganizationService: {orgServiceUrl}");
                    Console.WriteLine($"CRM version: {versionResponse.Version}");
                    Console.WriteLine($"User login: {crmUserLogin}");

                    Console.WriteLine($"\nOrganizationId: {whoAmIResponse.OrganizationId}");
                    Console.WriteLine($"BusinessUnitId: {whoAmIResponse.BusinessUnitId}");
                    Console.WriteLine($"UserId: {whoAmIResponse.UserId}");
                }
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(ex.Message); // Xrm.Sdk WSDL
                if (ex.InnerException != null)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }

                Console.ResetColor();
            }
            Console.WriteLine("\nPress ENTER for exit...");
            Console.ReadLine();
        }
    }
}

但是当我运行我的应用程序时,我得到了错误:

Xrm.Sdk WSDL

为什么会发生,我该如何解决?

回答1

组织服务客户端已弃用,网络核心不直接支持。

使用 dataverse serviceclient 连接时,连接字符串或 serviceclient 构造函数是唯一受支持的方式。

也就是说,由于底层身份验证堆栈的更改,onprem 没有得到很好的支持。

当前可能支持的最佳功能是通过 adfs on prem 与自定义身份验证处理程序一起使用 oAuth。

Dataverse 服务客户端的用户编写了一个扩展,它添加了对网络核心的 AD 和 WSTrust 支持,但它不是 MS 分发的一部分。

您可以在 AD onPrem 支持主题下的 dataverse serviceclient GitHub 站点问题板上找到指向它的链接 https://github.com/microsoft/PowerPlatform-DataverseServiceClient/issues/110

相似文章

最新文章