繁体   English   中英

从Dynamics CRM 2011插件调用WCF服务

[英]Calling WCF service from dynamics crm 2011 plugin

我已经为Dynamics CRM 2011编写了一个插件,该插件调用托管在其他服务器上的WCF服务。 以下是我插件中的代码。 在插件的类库中,我没有使用服务引用,而是使用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 .NET Framework文档。

任何人都有尝试这样做的经验吗? 或对我做错的任何想法?

您得到的错误是与要发送的对象的序列化有关。 检查您的测试对象是否具有Task属性。 如果是这样,请考虑在序列化期间忽略它。 请参阅此SO帖子。

  1. 确保服务设置正确。 几个月前,我哭了。 Google的“为VS 2010中的REST建立基本的WCF Web服务”,您可能会在WordPress博客上大受好评,在此我会解释这种方法。 (不要在这里自我宣传。我希望别人我自己解决此问题之前拥有该博客。真的。)

  2. 显示用于连接服务的代码。 明天上班时,我可以与我比较并发现任何差异。 我记得我遇到了这个序列化问题,但不确定如何杀死它。 但是,我们确实做到了。 (并检查Daryl的提示是否有效。可以。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM