invaliddatacontractexception:当调用docusign api时
本文关键字:api docusign 调用 invaliddatacontractexception | 更新日期: 2023-09-27 18:02:35
当在CRM在线上运行的插件中调用Docusign API时,我得到以下错误。
System.Runtime.Serialization。InvalidDataContractException:
类型"System.Threading.Tasks.Task"1 (DocuSignIntegration.Plugins.DocuSignAPI.Envelope)"不能序列化。考虑用DataContractAttribute属性标记它,并使用DataMemberAttribute标记您想要序列化的所有成员属性。如果类型是集合,请考虑使用CollectionDataContractAttribute。参见Microsoft .NET Framework文档中的其他支持的类型。
代码如下:
EnvelopeInformation envelopeInfo = new EnvelopeInformation();
envelopeInfo.AccountId = _accountId;
envelopeInfo.Subject = "My Subject";
envelopeInfo.EmailBlurb = "My email blurb.";
tracing.Trace("Enter using...");
using (var scope = new System.ServiceModel.OperationContextScope(_apiClient.InnerChannel))
{
tracing.Trace("httpRequestProperty");
在using (var scope…)行抛出错误。
我在网上找到的帮助建议更改服务,这当然无助于解决这个问题。有人有什么想法吗?
您正在配置的数据合约很可能有问题,因为我能够使用GitHub上的DocuSign SOAP SDK进行SOAP API调用。该项目可能对您有帮助,因为您可以将其用作示例(因为它可以开箱使用),并且有.NET
, Java
, PHP
, Salesforce
和Ruby
的示例项目。
使用该项目来比较ServiceModel和DataContracts是如何设置的,看看你的项目在哪里可能不合适。我还建议将代码包装在try-catch
块中,以获得有关错误的更多信息。例如:
try
{
EnvelopeInformation envelopeInfo = new EnvelopeInformation();
envelopeInfo.AccountId = _accountId;
envelopeInfo.Subject = "My Subject";
envelopeInfo.EmailBlurb = "My email blurb.";
tracing.Trace("Enter using...");
using (var scope = new System.ServiceModel.OperationContextScope(_apiClient.InnerChannel))
{
tracing.Trace("httpRequestProperty");
// ... remaining code ...
}
}
// Catch the InvalidDataContractException here.
catch(InvalidDataContractException iExc)
{
Console.WriteLine("You have an invalid data contract: ");
Console.WriteLine(iExc.Message);
Console.ReadLine();
}
catch (Exception exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine(exc.ToString() );
Console.ReadLine();
}