2013-10-01 1 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

Если вы используете SOAP API DocuSign вместо отдыха, то вы должны обязательно ознакомиться с SOAP SDK на GitHub:

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

Там в MS.NET (C#) версия, которая имеет образец кода, который работает из коробки, вам нужно только ввести свои учетные данные api. Я предлагаю вам использовать это в качестве базы вашего проекта, тем более, что он был обновлен в последнее время.

Поскольку вы не указали какую строку ошибки, вытекающая из него немного трудно отлаживать, но если вы посмотрите на SendTemplate.aspx.cs в SDK, вы увидите, что ссылка шаблона обрабатываются следующим образом:

// 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