.net 无法登录到Dynamics CRM OrganizationWebProxyClient为空尝试使用C#连接到Dynamic365时出错

iecba09b  于 2023-04-22  发布在  .NET
关注(0)|答案(3)|浏览(169)

我正在尝试使用C#代码连接到Dynamics 365。
下面是我的连接逻辑代码:

public static CrmServiceClient InitializeClient(string connstr)
{
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    var crmclient = new CrmServiceClient(connstr);

    // ERROR IS THROWN IF CONNECTION FAILS
    if (!crmclient.IsReady)
    {
        throw new Exception(crmclient.LastCrmError);
    }

    return crmclient;
}

我使用的是Microsoft Dynamics365 8.2版。
下面是连接字符串:

AuthType=Office365;Server=https://compagny.name/organizationname; Domain=domain; Username=username; Password=password

但我总是得到以下错误:
无法登录Dynamics CRM OrganizationWebProxyClient为空
有人能帮忙吗
谢谢

9gm1akwq

9gm1akwq1#

您正在使用Office365身份验证。它依赖于WS-Trust,并且您公司网络上的ADFS配置可能会导致此处出现问题。
不再推荐使用WS-Trust。切换到使用基于OAuth的连接字符串。
请参阅Use of Office365 authentication with Microsoft Dataverse - MS Learn和此公告:弃用用于连接到Dataverse的Office365身份验证类型和OrganizationServiceProxy类。

6yjfywim

6yjfywim2#

尝试使用OAuth认证类型而不是Office365。这里是我的C#控制台应用程序的一个示例,它提供了一个ServiceClient来与Dynamics通信。

var connectionString = "AuthType=OAuth;Username=your@user.name;Password=yourpassword;Url=urlToDynamicsInstance";
                        
 return new ServiceClient(connectionString);

ServiceClient在Microsoft.PowerPlatform.Dataverse.Client库中可用。
以下是我在应用中如何使用它的完整示例:

static IHostBuilder CreateHostBuilder(string[] args)
        {
            return Host.CreateDefaultBuilder()
                .ConfigureServices(services =>
                {
                    services.AddTransient<IOrganizationService>(serviceProvider =>
                    {
                        var connectionString = "AuthType=OAuth;Username=your@user.name;Password=yourpassword;Url=urlToDynamicsInstance";

                        return new ServiceClient(connectionString);
                    });
                });
        }
soat7uwm

soat7uwm3#

你可以用这个方法

string connString = "AuthType=Office365;Url=https:yourorg.api.crm4.dynamics.com/;Username=username;Password=password;";

        CrmServiceClient service = new CrmServiceClient(connString);

一定要写;每个领域。

相关问题