Невозможно подключиться к Dynamics 365(локально) с проверкой подлинности IFD

У меня есть одна среда Dynamics CRM 365(локальная) с проверкой подлинности IFD. Я пытаюсь выполнить операции на CRM с SDK. Сначала я делаю тестовое соединение и сохраняю это тестовое соединение в объекте кеша. Этот объект кэша имеет тип IDictionary, Я борюсь со странной проблемой. Для разных экземпляров он будет создавать разные прокси и кэшировать их.

Сценарии:
1) Тип аутентификации - Федерация - он будет принимать этот действующий идентификатор и URL-адрес обнаружения и создавать его на ключе с использованием алгоритма MD5 и сохранять в IDictionary, поэтому в следующий раз, когда я выполню какую-либо операцию, он будет проверять прокси в кэше. Если кеш имеет значение true, он возьмет прокси из кеша и продолжит работу.

Это работает, как и ожидалось в dev, но в производстве у меня есть одна странная проблема. Предположим, что в первый день он устанавливает соединение, когда типом аутентификации является AD, и он работает только с этим типом соединения в течение всего дня, даже если я даю URL-адрес обнаружения для федерации.

В следующий раз, когда я попытаюсь предположить на второй день или если я закрою приложение и снова открою, на этот раз оно не работает для той же конфигурации.

Я слишком смущен тем, что происходит точно.

код для подключения:

private CrmServiceClient CreateServiceClient(AuthenticationProviderType _endpointType, IServiceManagement<IOrganizationService> organizationServiceManagement)
        {
            AuthCredentials = GetCredentials(_endpointType);
            string connectionString = string.Empty;
            string organizationUri = OrganizationServiceManagement.CurrentServiceEndpoint.Address.Uri.AbsoluteUri
                .Replace(OrganizationServiceManagement.CurrentServiceEndpoint.Address.Uri.AbsolutePath, string.Empty);
            switch (_endpointType)
            {
                case AuthenticationProviderType.None:
                    break;
                case AuthenticationProviderType.ActiveDirectory:
                    connectionString = $"AuthType=AD;Url={ organizationUri }/{ AuthInfo.OrganizationUniqueName} ; Domain={ AuthInfo.Domain } ; Username={ AuthInfo.UserName }; Password ={ AuthInfo.Password }";
                    break;
                case AuthenticationProviderType.Federation:
                    connectionString = $"AuthType=IFD;ServiceUri={ organizationUri }/{ AuthInfo.OrganizationUniqueName };Domain={ AuthInfo.Domain };Username={ AuthInfo.Domain }\\{ AuthInfo.UserName };Password={ AuthInfo.Password };";
                    break;
                case AuthenticationProviderType.LiveId:
                    break;
                case AuthenticationProviderType.OnlineFederation:
                    connectionString = $"AuthType=Office365;Username={AuthInfo.UserName}; Password={AuthInfo.Password}; Url={organizationUri}";
                    break;
                default:
                    break;
            }
            var serviceClient = new CrmServiceClient(connectionString);
            return serviceClient;
        }

0 ответов

Другие вопросы по тегам