2009-10-01 6 views
0

Le correctif cumulatif 6 de Dynamics CRM 4 est configuré en IFD et a défini le paramètre UserRootPath à l'aide de l'outil de configuration de déploiement. L'ajout d'utilisateurs via l'interface CRM fonctionne parfaitement. Cependant, lorsque vous essayez d'ajouter un utilisateur via l'API CrmService, l'utilisateur n'est pas ajouté et le message de trace est inclus ci-dessous. L'ajout d'utilisateurs via l'API CrmService fonctionne si nous supprimons le paramètre UserRootPath de l'organisation. Le chemin d'accès semble correct, fonctionne avec d'autres outils LDAP et l'utilisateur se trouve dans l'unité d'organisation spécifiée. Nous utilisons le chemin "LDAP: // serveur/OU = testorg; OU = Hébergement; DC = domaine; DC = local".Impossible d'ajouter un utilisateur avec l'API CrmService dans Dynamics CRM

 
[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 --- 

Répondre

1

L'erreur 0x80072020 est liée à un accès générique "Accès refusé" dans AD.

En fonction de votre configuration, vous pouvez essayer d'identifier le problème en modifiant les éléments suivants:

1) Accorde l'option « délégué » à l'utilisateur du pool d'applications utilisant les utilisateurs Active Directory et des ordinateurs. 2) Ajouter un web.config dans le dossier MSCRMServices et tourner l'usurpation d'identité sur tels que:

< identité impersonate = "true" userName = "mydomain \ bob" password = "constructeur" />

+0

Modification du web .config a résolu le problème. Merci pour votre aide. – Chris

+2

@J. Strydom où avez-vous découvert que 0x80072020 est un problème d'accès refusé? – ghostJago

Questions connexes