0

どうやら小さな修正があるようですが、何十年もかかる問題で立ち往生しています。私は CRM シェアポイント ダイナミクスなどの初心者です。しかし、私はそれでいくつかの仕事をすることができました。私が持っているのは CRM 2011 Web サービスです。

プロジェクトに wsdl パスをサービス参照として追加しました。これで Reference.cs クラスが作成されました。

これは奇妙なエラーをスローするコードです

 ServiceReference1.OrganizationServiceClient obj = new ServiceReference1.OrganizationServiceClient();
 ServiceReference1.Entity entity = new ServiceReference1.Entity();
 entity.LogicalName = "new_project";
 entity.Attributes = new ServiceReference1.AttributeCollection();
 entity.Attributes.Add(new KeyValuePair<string, object>("new_name", "project2"));

 ServiceReference1.OrganizationRequest request = new ServiceReference1.OrganizationRequest() { RequestName = "RetrieveDuplicates" };
 request.Parameters = new ServiceReference1.ParameterCollection();
 request.Parameters.Add(new KeyValuePair<string, object>("BusinessEntity", entity));
 request.Parameters.Add(new KeyValuePair<string, object>("MatchingEntityName", "new_project"));
 request.Parameters.Add(new KeyValuePair<string, object>("PagingInfo", new ServiceReference1.PagingInfo() { PageNumber = 1, Count = 50 }));

 var response= obj.Execute(request);
 obj.Create(entity);

コードは、追加しようとしている "new_project" エンティティが、既に追加されているメンバーの複製であるかどうかを確認するだけです。

obj.execute() で受け取る不愉快な例外を次に示します。

メッセージを逆シリアル化しようとしているときに、フォーマッタが例外をスローしました: パラメーターを逆シリアル化しようとしているときにエラーが発生しました http://schemas.microsoft.com/xrm/2011/Contracts/Services:ExecuteResult. InnerException メッセージは、「行 1 位置 669 のエラーです。要素「http://schemas.datacontract.org/2004/07/System.Collections.Generic:value」には、名前「http:/」にマップされるタイプのデータが含まれています。 /schemas.microsoft.com/xrm/2011/Contracts:EntityCollection'. デシリアライザーは、この名前にマップされる型を認識しません。DataContractResolver の使用を検討するか、'EntityCollection' に対応する型を既知の型のリストに追加します。たとえば、KnownTypeAttribute 属性を使用するか、DataContractSerializer に渡される既知の型のリストに追加します。詳細については、InnerException を参照してください。

また、参照で EntityCollection に KnownAttribute を添付したことにも注意してください。cs。

この泥沼から引きずり出してくれたらありがたい

4

0 に答える 0