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。但它必须是正确的...如果您需要有关该主题的帮助,请提出另一个问题。
在上线过程之后,我创建了新密钥并且我也在使用它们。但是我得到了这个错误
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。但它必须是正确的...如果您需要有关该主题的帮助,请提出另一个问题。