1

別のサーバーでホストされているWCFサービスを呼び出すDynamicsCRM2011のプラグインを作成しました。以下は私のプラグインのコードです。プラグインのクラスライブラリでは、サービス参照を使用していませんが、svcutil.exeを使用してWCFクライアントを生成しました。

var binding = new BasicHttpBinding();
binding.Name = "BasicHttpBinding_IMyService";
binding.Security.Mode = BasicHttpSecurityMode.None;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
var endpoint = new EndpointAddress("http://test/MyService.svc");
ChannelFactory<IMyService> factory = new ChannelFactory<IMyService>(binding, endpoint);
IMyService channel = factory.CreateChannel();
channel.InsertTest(testobject);

次のエラーが発生します。

'System.Threading.Tasks.Task`1[System.Int32]'はシリアル化できません。DataContractAttribute属性でマークを付け、シリアル化するすべてのメンバーをDataMemberAttribute属性でマークすることを検討してください。タイプがコレクションの場合は、CollectionDataContractAttributeでマークすることを検討してください。サポートされている他のタイプについては、Microsoft.NETFrameworkのドキュメントを参照してください。

誰かがこれをやろうとした経験がありますか?または私が間違っていることについてのアイデアはありますか?

4

2 に答える 2

0
  1. サービスが正しく設定されていることを確認してください。私は数ヶ月前にそれをして血を流しました。Google で「VS 2010 で REST 用の基本的な WCF Web サービスをセットアップする」を参照してください。アプローチを説明している WordPress ブログでおそらくヒットするでしょう。(ここで自己宣伝しようとしているわけではありません。自分で問題を解決する前に、他の誰かがそのブログを持っていたらよかったのに。本当に。)

  2. サービスへの接続に使用しているコードを表示します。明日仕事に着いたら、自分と比較して違いを見つけることができます。このシリアライゼーションの問題があったことは覚えていますが、どうやって解決したかはわかりません。しかし、どういうわけか、私たちはそうしました。(そして、ダリルのヒントが機能するかどうかを確認します。機能する可能性があります。)

于 2013-01-24T20:57:02.487 に答える