Невозможно добавить пользователя с помощью CrmService API в Dynamics CRM

У нас есть накопительный пакет обновления 6 для Dynamics CRM 4, настроенный как IFD, и мы установили UserRootPath с помощью инструмента конфигурации развертывания. Добавление пользователей через интерфейс CRM работает отлично. Однако при попытке добавить пользователя через CrmService API пользователь не добавляется, и мы получаем сообщение трассировки, указанное ниже. Добавление пользователей через CrmService API работает, если мы удалим параметр UserRootPath из организации. Путь кажется правильным, работает с другими инструментами LDAP, и пользователь находится в указанном OU. Мы используем путь «LDAP: // dcserver / OU = testorg; OU = Hosting; DC = domain; DC = local».

[2009-09-29 13:19:54.7] Process: w3wp |Organization:---- |Thread:    9 |Category: Platform.Sdk |User: ---- |Level: Error | CompositeSoapExtensionExceptionHandler.Handle
>CrmSoapExtension detected CrmException:
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.DirectoryServices.DirectoryServicesCOMException (0x80072020): An operations error occurred.

   at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   at System.DirectoryServices.DirectoryEntry.Bind()
   at System.DirectoryServices.DirectoryEntry.get_AdsObject()
   at System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne)
   at System.DirectoryServices.DirectorySearcher.FindOne()
   at Microsoft.Crm.ObjectModel.SystemUserServiceInternal`1.CheckUserUnderRootPath(String domainAccountName, ExecutionContext context)
   at Microsoft.Crm.ObjectModel.SystemUserServiceInternal`1.CreateInternal(Guid organizationId, IBusinessEntity systemuser, ExecutionContext context)
   at Microsoft.Crm.ObjectModel.SystemUserServiceInternal`1.Create(IBusinessEntity systemuser, ExecutionContext context)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Web.Services.Protocols.LogicalMethodInfo.Invoke(Object target, Object[] values)
   at Microsoft.Crm.Extensibility.InternalOperationPlugin.Execute(IPluginExecutionContext context)
   at Microsoft.Crm.Extensibility.PluginStep.Execute(PipelineExecutionContext context)
   at Microsoft.Crm.Extensibility.Pipeline.Execute(PipelineExecutionContext context)
   at Microsoft.Crm.Extensibility.MessageProcessor.Execute(PipelineExecutionContext context)
   at Microsoft.Crm.Extensibility.InternalMessageDispatcher.Execute(PipelineExecutionContext context)
   at Microsoft.Crm.Extensibility.ExternalMessageDispatcher.Execute(String messageName, Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, PropertyBag fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId)
   at Microsoft.Crm.Sdk.RequestBase.Process(Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId)
   at Microsoft.Crm.Sdk.RequestBase.Process(CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId)
   at Microsoft.Crm.Sdk.CrmServiceInternal.Execute(RequestBase request, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId)
   at Microsoft.Crm.Sdk.Crm2007.CrmService.Execute(Request request)
   --- End of inner exception stack trace ---

person Chris    schedule 01.10.2009    source источник


Ответы (1)


Ошибка 0x80072020 связана с общим «Доступ запрещен» в AD.

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

1) Предоставьте возможность «делегировать» пользователю пула приложений, использующему Active Directory - пользователи и компьютеры. 2) Добавьте web.config в папку MSCRMServices и включите олицетворение, например:

‹Identity impersonate =" true "userName =" mydomain \ bob "password =" builder "/>

person Community    schedule 02.10.2009
comment
Изменение web.config решило проблему. Спасибо вам за помощь. - person Chris; 02.10.2009
comment
@J. Strydom, где вы узнали, что 0x80072020 - это проблема с отказом в доступе? - person ghostJago; 02.09.2011