Dynamics 365 SDK выдает исключение «Сбой согласования интерфейса поставщика поддержки безопасности (SSPI)» - PullRequest
0 голосов
/ 16 января 2019

Я подключаюсь к локальной организации Dynamics 365 v9.0 через домены Active Directory через Microsoft.Xrm.Sdk + Microsoft.Pfe.Xrm.Core пакеты NuGet для запуска запросов SDK.Иногда я получаю исключение: The Security Support Provider Interface (SSPI) negotiation failed.

Моя машина и сервер Dynamics расположены в разных доменах.Трассировки Fiddler показывают, что обе машины доступны в сети.

Исключение выдается в библиотеке PFE, точнее в строке operation() ниже.

Parallel.ForEach<TRequest, ParallelOrganizationOperationContext<TRequest, bool>>(requests,
    new ParallelOptions() { MaxDegreeOfParallelism = this.MaxDegreeOfParallelism },
    () => new ParallelOrganizationOperationContext<TRequest, bool>(),
    (request, loopState, index, context) =>
    {
        try
        {
            operation(request, threadLocalProxy.Value);
        }
        catch (FaultException<OrganizationServiceFault> fault)
        {
            //Track faults locally                                
            if (errorHandler != null)
            {
                context.Failures.Add(new ParallelOrganizationOperationFailure<TRequest>(request, fault));
            }
            else
            {
                throw;
            }
        }

        return context;
    },
    (context) =>
    {
        //Join faults together
        Array.ForEach(context.Failures.ToArray(), f => allFailures.Add(f));
    });

Источник: https://github.com/seanmcne/XrmCoreLibrary/blob/8892a9e93c42d8c35aac2a212588d45359cfd1a2/v8/Client/ParallelServiceProxy.cs#L236

1 Ответ

0 голосов
/ 16 января 2019

Сандрино Ди Маттиа предоставил обходной путь в Советы и рекомендации по раннему связыванию для Dynamics CRM 2011 , статья:

Если вы работаете с виртуальной машиной, которая является частью другого домена, вы можете получить эту ошибку (междоменный вызов). Чтобы решить эту проблему, вам нужно изменить способ передачи аргументов аутентификации в CrmSvcUtil.exe. Вместо вызова CrmSvcUtil.exe используйте следующую строку:

    CrmSvcUtil.exe /url:"http:/srv/org/XRMServices/2011/Organization.svc" /out:Context.cs
    /username:"sandrino" /password:"pass" /domain:"somedomain" /serviceContextName:Context

Измените его на следующее:

    CrmSvcUtil.exe /url:"http:/srv/org/XRMServices/2011/Organization.svc" /out:Context.cs
    /username:"sandrino@somedomain" /password:"pass" /serviceContextName:Context

Удалив аргумент домена и добавив домен к имени пользователя (разделенному знаком @), вы решите междоменную проблему.

...