Docusign C# CreateEnvelope 错误 - 无法为 SSL/TLS 安全通道建立信任关系

Docusign C# CreateEnvelope error - Could not establish trust relationship for the SSL/TLS secure channel

在上线过程之后,我创建了新密钥并且我也在使用它们。但是我得到了这个错误

Error calling CreateEnvelope: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

我正在使用 C# 应用程序。 Create Envelope方法抛出异常:

EnvelopeDefinition Envelope = new EnvelopeDefinition
{
       EmailSubject = EmailSubject,
       Documents = EnvelopeDocuments,
       Recipients = new Recipients { Signers = Signers },
       Status = "sent"
};

return GetEnvelopesApi().CreateEnvelope(_AccountId, Envelope).EnvelopeId;

其中 GetEnvelopesApi 只是调用 docusign.esign.api 的 public EnvelopesApi(Configuration configuration = null); :

 private EnvelopesApi GetEnvelopesApi()
 {
      ApiClient Client = new ApiClient("https://docusign.net/restapi");

      Client.Configuration.AddDefaultHeader("Authorization", "Bearer " + GetAccessToken());

      return new EnvelopesApi(Client.Configuration);
 }

如果我使用我的开发人员演示密钥而不是生产密钥,并且使用“https://demo.docusign.net/restapi”而不是生产 url,它会起作用。

你的问题是缺少https,所以你需要把url改成https://docusign.net/restapi

更新

我想我发现了你的问题! url 应该是 https://www.docusign.net/restapi 因为 ssl 证书被签名使用 www. 并且当你没有它时会给你一个证书错误

更新 2

在连接之前添加以下行:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

这是为了强制连接使用 TLS 1.2

另外,我建议你在函数内部调试它,这样你就知道它在哪里中断了

更新 3

如果您仍然收到 SSL/TLS 问题,您也可以尝试在休息电话之前添加以下行:

ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

您为获取错误消息所做的操作

{"errorCode":"USER_LACKS_MEMBERSHIP",
 "message": "The UserID does not have a valid membership in this Account."} 

正确

接下来,您需要解决导致USER_LACKS_MEMBERSHIP错误的问题。这可能是因为您继续使用来自开发者(演示)帐户的 UserId(guid 格式)。您需要使用生产帐户中的 UserId。

另请注意,您必须确定您帐户的 基础 url 是什么。这决定了你是否应该在生产中使用 www.docusign.net,或者 na2.docusign.net或其他。

您可以手动或自动确定帐户的基数 url。但它必须是正确的...如果您需要有关该主题的帮助,请提出另一个问题。