У меня есть некоторый интеграционный код, который намеревается использовать службу организации через CRM SDK.
В одной среде создаю IServiceManagement<IOrganizationService>
:
IServiceManagement<IOrganizationService> orgServiceManagement = ServiceConfigurationFactory.CreateManagement<IOrganizationService>(new Uri("dynamics uri")));
, а затем выполняю проверку подлинности с помощью службыучетные данные учетной записи:
AuthenticationCredentials authCredentials = new AuthenticationCredentials();
authCredentials.ClientCredentials.UserName.UserName = _config.GetValue<string>("Dynamics:Username");
authCredentials.ClientCredentials.UserName.Password = _config.GetValue<string>("Dynamics:Password");
AuthenticationCredentials tokenCredentials = orgServiceManagement.Authenticate(authCredentials);
работает нормально.
В другой среде Dynamics сбой вызова GetServiceManagement со следующим сообщением об ошибке:
System.InvalidOperationException HResult = 0x80131509 Сообщение= Метаданные содержат ссылку, которая не может быть разрешена: 'https://login.microsoftonline.com/[guid]/oauth2/authorize?client_id=[some идентификатор клиента] & response_mode = form_post & response_type = code + id_token & scope = openid + profile & state = OpenIdConnect.AuthenticationProperties% [some base-64] RedirectTo% 3dhttps% 253a% 252f%252ftst-success.crm4.dynamics.com% 252f & nonce = [некоторые nonce] & redirect_uri = https:% 2f% 2fcloudredirector.crm4.dynamics.com% 2fG% 2fAuthRedirect% 2fIndex.aspx & max_age = 86400 '.Источник = System.ServiceModel StackTrace: в System.ServiceModel.Description.MetadataExchangeClient.MetadataRetriever.Retrieve (TimeoutHelper timeoutHelper) в System.ServiceModel.Description.MetadataExchangeClient.ResolveNext (ResolveCallState resolveCallState) в System.ServiceModel.Description.MetadataExchangeClient.GetMetadata (MetadataRetriever ретривера) в System.ServiceModel.Description.MetadataExchangeClient.GetMetadata (адрес Uri, режим MetadataExchangeClientMode) в Microsoft.Xrm.Sdk.Client.ServiceMetadataUtility.RetrieveServiceEndpointMetaer.service.evicerieServiceService.Exe`1..ctor (Uri serviceUri, логическое checkForSecondary) в Microsoft.Xrm.Sdk.Client.ServiceConfigurationFactory.CreateConfiguration [TService] (Uri serviceUri, логический enableProxyTypes, сборка сборки) в Microsoft.Xrm.Sdk.Client.FateConf_Configuration \TService] (Uri serviceUri) в CrmAuthTest.Program.Main (String [] args) в c: \ users \ t.wolverson \ Source \ Repos \ CrmAuthTest \ CrmAuthTest \ Program.cs: строка 18
Внутреннее исключение 1: XmlException: элементы CData недопустимы на верхнем уровнеXML документСтрока 1, позиция 3.
(я замаскировал биты, которые выглядят идентифицирующими или криптографическими)
POSTing к этому URL в PostMan выдает HTML-код для страницы входа в браузер, что объясняет ошибку;это не то, что ожидает ServiceConfigurationFactory.Сценарий не является интерактивным для пользователя, поэтому это никогда не будет иметь смысла, поскольку нет браузера и нет пользователя, способного с ним взаимодействовать.
Что мне нужно изменить в Dynamics CRM Online, чтобы он не делал этого,и заставить его просто нормально работать?