1

Microsoft Dynamics CRM 2013 온라인 플랫폼 용 플러그인을 구축했습니다. 플러그인은 my_custom_entity의 h 제에 등록됩니다. 그것은 동기적이고 사후 적입니다. 가장은 호출 사용자로 설정됩니다. 내가 아는 한, 플러그인은 이러한 설정으로 발신자의 권한 등으로 해고되어야합니다.항상 SYSTEM 사용자가 CRM 2013 온라인 플러그인을 실행하는 이유

나는 이유를 알 수 없지만 플러그인은 항상 "SYSTEM"사용자로 실행됩니다. 나는 행운이없는 두 명의 서로 다른 시스템 사용자를 사용하려고 시도했다. 내 플러그인이 워크 플로를 호출하고 워크 플로가 전자 메일을 보내므로 문제가 발생합니다. SYSTEM 사용자는 전자 메일을 보낼 수 없습니다.

CRM 2013의 새로운 기능입니까? Google에 문의했지만 관련성이없는 항목을 찾을 수 없습니다. 이미 플러그인 어셈블리를 등록 취소하고 등록하려고했습니다. 차이 없음.

플러그인을 등록한 사용자 (엔티티를 삭제 한 사용자) 대신 플러그인 등록이 실행되도록하려면 어떻게해야합니까?

고맙습니다.

+1

이전 플러그인 등록 도구를 사용해 보았습니까? 나는 당신이 사용하고있는 플러그인 등록의 버그 일 수 있다고 걱정하고 있습니다. 시간이 있으면 온라인 시험판을 통해 유사한 사례를 설정합니다 –

+1

@GuidoPreite 사실 저는 플러그인 등록 도구에서 이상한 행동을 발견했습니다. 그것은 내가 가장을 단지 한 번만 바꿀 수는 없습니다. 프로그램을 다시 시작하면 다시 한 번 할 수 있습니다. 확실히 다른 버전을 사용해 보도록하겠습니다. 내가 당신에게 알려 드리겠습니다 – kivikall

+1

플러그인 등록 도구 제가 지금 사용하고있는 문제는 버전 6.1.1.1143 64 비트입니다. Windows 8 머신 (플러그인 등록 도구는 Windows 버전 : Microsoft Windows NT 6.2.9200.0 64bit)을 가지고 있습니다. – kivikall

답변

3

서비스 참조는 어떻게 받습니까?

이렇게하면 플러그인을 트리거 한 사용자로 수행 한 모든 작업을 수행해야합니다.

// Obtain the organization service reference. 
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); 
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); 

null 값을 전달하는 경우 시스템 사용자가 표시됩니다.

IOrganizationServiceFactory.CreateOrganizationService

serviceFactory.CreateOrganizationService()을 위해 만들어진 서비스 호출 시스템의 사용자를 지정합니다. A null 값은 SYSTEM 사용자를 나타냅니다. 플러그인에서 호출 될 때 Guid.Empty 값은 IPluginExecutionContext와 동일한 사용자를 나타냅니다. 사용자 ID입니다. 사용자 지정 워크 플로 작업에서 호출 될 때 Guid.Empty 값 은 IWorkflowExecutionContext.UserId와 동일한 사용자를 나타냅니다. 기타 값은 특정 시스템 사용자를 나타냅니다.

+0

나는 정말로 내가 거기에서 실수를했을 것이라는 희망을 가지고있다. 내가 컨텍스트로 말한 것처럼 서비스 참조를 얻고 있습니다. 사용자 ID. 게다가 그것은 "Calling user"옵션 이외의 다른 모든 것들과 함께 작동하는 이유를 설명하지 않을 것입니까? – kivikall

+1

와우! 나는 메시지/이벤트 삭제와 관련이 있다는 것을 깨달았다. 나는 기본적으로 정확히 동일한 방법으로 다른 플러그인을 실행하려했지만 여러 단계 (하나는 Create에 등록, 다른 하나는 Update에, Delete는 하나)에 여러 단계가있었습니다. 만들기 및 업데이트 단계가 호출 사용자 아래에서 완벽하게 작동하지만이 다른 플러그인을 사용하는 경우에도 SYSTEM 단계에서 삭제 단계가 실행됩니다 ... – kivikall

0

당신은 오히려 context.InitiatingUserId를 사용해야합니다.

IOrganizationService service = serviceFactory.CreateOrganizationService(context.InitiatingUserId); 
+1

이 질문에 어떻게 대답합니까? –