Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
A veces, necesita el código en un complemento para ejecutarse en el contexto de un usuario diferente, por ejemplo, para realizar una operación en su nombre.
Hay dos formas de aplicar suplantación en complementos: en el registro o la ejecución.
En el registro del complemento
Al registrar un paso de complemento, puede especificar una cuenta de usuario que se usará cuando se ejecute el código seleccionando la opción Ejecutar en contexto del usuario . De forma predeterminada, se establece para usar el usuario que realiza la llamada, que es la cuenta de usuario que inició la acción. Cuando se aplica esta opción predeterminada, SdkMessageProcessingStep.ImpersonatingUserId se establecerá en null o Empty.
Más información: Registrar paso de complemento.
Durante la ejecución del complemento
Puede invalidar la configuración especificada en el registro en tiempo de ejecución estableciendo el IOrganizationServiceFactory.CreateOrganizationService(Nullable<Guid>)userId parámetro.
Normalmente se establece en el valor IExecutionContext.UserId que aplicará la cuenta de usuario definida por el registro del paso del complemento.
(IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
Si desea invalidar el registro de pasos, puede pasar el valor de IExecutionContext.InitiatingUserId para tener un servicio que usará la cuenta de usuario que inició la acción que provocó la ejecución del complemento.
También puede proporcionar SystemUser.SystemUserId desde cualquier cuenta de usuario válida. Esto funcionará siempre que ese usuario tenga los permisos para realizar las operaciones en el complemento.