2013-10-01 27 views
0

我收到错误 无法加载模板。无法从TemplateReference(0)加载模板。错误:根级别的数据无效。行1,位置1.我得到c#和Docusign错误如何解决此错误

下面是我正在使用的代码的简化版本... 如果我不使用模板引用类型的代码一切工作正常。但是,当我开始使用模板引用..没有任何作品,我得到这个错误。任何人都有建议?

 TemplateReference _tempRef = new TemplateReference(); 
     TemplateReference[] _tempRefs = new TemplateReference[] { }; 
     TemplateReferenceRoleAssignment[] _roleAssignmentArray = new TemplateReferenceRoleAssignment[] { }; 
     Recipient[] _recipientsArray = new Recipient[] { }; 



     EnvelopeInformation envelope = new EnvelopeInformation(); 

     Recipient recipient = new Recipient(); 
     recipient.ID = "1"; 
     recipient.Email = "[email protected]"; 
     recipient.UserName = "Some Person"; 
     recipient.Type = RecipientTypeCode.Signer; 
     recipient.RequireIDLookup = false; 
     Array.Resize(ref _roleAssignmentArray, 1); 
     Array.Resize(ref _recipientsArray, 1); 


     _recipientsArray[0] = recipient; 

     var saRoleAssignment = new TemplateReferenceRoleAssignment 
     { 
      RecipientID = "1", 
      RoleName = "SA" 
     }; 
     _roleAssignmentArray[0] = saRoleAssignment; 
     var reference = new Docusign.TemplateReference(); 
     reference.Template = "49C0BE2B-48F7-4F38-B44A-19EB8E6A1A38"; 
     reference.Document = new Docusign.Document(); 
     reference.Document.PDFBytes = new byte[0]; 
     reference.Document.ID = Convert.ToString(1); 
     reference.Document.Name = "please work"; 

     reference.RoleAssignments = _roleAssignmentArray; 
     Array.Resize(ref _tempRefs, 1); 
     _tempRefs[1 - 1] = reference; 

     //.NET 

     //.NET 
     envelope.AccountId = "accountID"; 
     envelope.Subject = "Sample Application"; 
     envelope.EmailBlurb = "You can add a personal message here."; 


     APIServiceSoapClient apiService = new APIServiceSoapClient(); 
     apiService.ClientCredentials.UserName.UserName = "userhere"; 
     apiService.ClientCredentials.UserName.Password = "pass"; 
     var status = apiService.CreateEnvelopeFromTemplates(_tempRefs, _recipientsArray, envelope, true); 

回答

0

如果您使用的DocuSign的SOAP API,而不是REST,那么你绝对应该用在GitHub上的SOAP SDK熟悉:

https://github.com/docusign/DocuSign-eSignature-SDK

有一个MS.NET(C#)的版本,具有可直接使用的示例代码,您只需输入您的API凭证即可。我建议你使用它作为你的项目基地,特别是因为它最近更新了。

既然你还没有确定哪一行的误差而产生从它有点难以调试,但如果你在SDK看SendTemplate.aspx.cs,你会看到模板引用实例化这样的:

// Construct the template reference 
var templateReference = new DocuSignAPI.TemplateReference 
{ 
    TemplateLocation = DocuSignAPI.TemplateLocationCode.Server, 
    Template = TemplateTable.Value, 
    RoleAssignments = CreateFinalRoleAssignments(recipients) 
}; 

其中CreateFinalRoleAssignments()定义为:

protected DocuSignAPI.TemplateReferenceRoleAssignment[] CreateFinalRoleAssignments(DocuSignAPI.Recipient[] recipients) 
    { 
     // Match up all the recipients to the roles on the template 
     return recipients.Select(recipient => new DocuSignAPI.TemplateReferenceRoleAssignment 
      { 
       RecipientID = recipient.ID, RoleName = recipient.RoleName 
      }).ToArray(); 
    } 
+0

看起来我缺少的是TemplateLocation = DocuSignAPI.TemplateLocationCode.Server行, – Rico