2009-12-07 1 views
1

주문 업데이트시 SOAP 메시지에 salesorder 데이터를 보내는 MS Dynamics CRM 4.0 용 간단한 플러그인을 만들려고합니다. 이상한 점은 내가 저장하려고 할 때마다이 오류가 발생한다는 것입니다. (플러그인을 실행하십시오). 제대로 및 실행주어진 키가 사전에 없습니다.

The given key was not present in the dictionary. 

나는 (심지어 두 저장 사이에 아무 것도 변경하지 않고) 다시 바로 그 후 저장 : 나는 SalesOrder를의 (모든 필드)를 업데이트 한 다음 저장하면 그래서 나는 오류 내가 원하는 모든 데이터를 제공한다. 똑같은 때마다 정말로 : 첫 번째 저장 : 오류, 두 번째 저장 : 올바르게 실행.

어떤 아이디어일까요?

이것은 내 코드의 첫 번째 부분입니다. 실제로이 경우 SalesOrder를의 데이터 세트를 가져옵니다 여기서

public class CompleteOrderPlugin : IPlugin 


    {  


     public void Execute(IPluginExecutionContext context) 
     { 




       DynamicEntity entity = null; 
       if (context.InputParameters.Properties.Contains(ParameterName.Target) && 
         context.InputParameters.Properties[ParameterName.Target] is DynamicEntity) 
       { 

        entity = (DynamicEntity)context.InputParameters[ParameterName.Target]; 
        if (entity.Name != EntityName.salesorder.ToString()) { return; } 

       } 
       else 
       { 

        return; 
       } 

난 내 자신의 변수를 채우기 위해 속성의 값을 사용하는 경우 나머지입니다.

+0

필자는 Fiddler를 사용하여 두 요청을 비교할 것입니다. 두 요청이 실제로 정확히 같은 요청인지 확인하십시오. 나는 거기에없는 동적 엔티티의 속성에 액세스 할 때 일반적인 오류라고 생각합니다. 하지만 Salesorders에는 CRM에 대한 추가 동작이있을 수 있습니다 (CRM의 내부 플러그인과 플러그인인지 여부는 알 수 없습니다). 피들러 추적이 도움이되지 않으면 디버거를 연결하고 플러그인을 단계별로 실행합니다. –

+1

또한 플러그인 코드를 자유롭게 게시 할 수 있습니다. –

+0

도움 주셔서 감사합니다! – AaronTjong

답변

1

먼저 플러그인 등록 도구에서 판매 주문의 게시 이미지를 만든 다음 판매 주문에서 직접 가져 오는 이미지 대신에 게시 이미지의 값을 사용하여이 문제를 해결했습니다. 업데이트에서 실제로 변경된 값만 가져 오기 때문에이 작업을 수행했습니다.