C# 文档签名项目获取"The type initializer for 'System.IdentityModel.Tokens.Jwt.JsonExtensions' threw an exc



正在查找有关调用RequestJWTUserToken((时出现此运行时错误的原因的帮助。这是一个堆栈跟踪:

ERROR: The type initializer for 'System.IdentityModel.Tokens.Jwt.JsonExtensions' threw an exception. 
at System.IdentityModel.Tokens.Jwt.JsonExtensions.SerializeToJson(Object value)
at System.IdentityModel.Tokens.Jwt.JwtHeader.SerializeToJson() in C:agent1_work109ssrcSystem.IdentityModel.Tokens.JwtJwtHeader.cs:line 319
at System.IdentityModel.Tokens.Jwt.JwtHeader.Base64UrlEncode() in C:agent1_work109ssrcSystem.IdentityModel.Tokens.JwtJwtHeader.cs:line 277
at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.CreateJwtSecurityTokenPrivate(String issuer, String audience, ClaimsIdentity subject, Nullable`1 notBefore, Nullable`1 expires, Nullable`1 issuedAt, SigningCredentials signingCredentials, EncryptingCredentials encryptingCredentials) in C:agent1_work109ssrcSystem.IdentityModel.Tokens.JwtJwtSecurityTokenHandler.cs:line 506
at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.CreateToken(SecurityTokenDescriptor tokenDescriptor) in C:agent1_work109ssrcSystem.IdentityModel.Tokens.JwtJwtSecurityTokenHandler.cs:line 468
at DocuSign.eSign.Client.ApiClient.RequestJWTUserToken(String clientId, String userId, String oauthBasePath, Byte[] privateKeyBytes, Int32 expiresInHours, List`1 scopes)

我已经在我的项目中加载了最新版本的DocuSign.eSign(5.8.0(,我一直尝试回到4.0.0,但都得到了同样的错误。这是源代码(基本上使用Quickstart中的JWTAuth.cs代码(。导致错误的是RequestJWTUserToken(…(:

var devPlaceholder = "https://demo.docusign.net/restapi"; // dev
ApiClient _apiClient = new ApiClient(devPlaceholder);
OAuth.OAuthToken authToken = _apiClient.RequestJWTUserToken(
"55xxxxxx-xxxx-xxxx-xxxxxxxxxxxxxx25dd",
"b5xxxxxx-xxxx-xxxx-xxxxxxxxxxxxxx26b4",
"account-d.docusign.com",
File.ReadAllBytes("C:\secure\pem_quickstart_secret_key.txt"),
1,
scopes);
string accessToken = authToken.access_token;

当我使用Nuget加载DocuSign.eSign.dll(5.8.0(时,它也加载了依赖项:

BouncyCastle (1.8.9)
Microsoft.CSharp (4.5.0)
Microsoft.IdentityModel.JsonWebTokens (5.4.0)
Microsoft.IdentityModel.Logging (5.4.0)
Microsoft.IdentityModel.Protocols (5.4.0)
Microsoft.IdentityModel.Tokens (5.4.0)
Newtonsoft.Json (11.0.2)
RestSharp (106.12.0)
System.ComponentModel.Annotations (4.5.0)
System.IdentityModel.Tokens.Jwt (5.4.0)

我对此感到困惑,因为我不知道Jwt程序集的内部工作原理,也不知道我是否只是错过了它的一些初始化或发生了什么。

下面是工作API调用的示例:

var integrationKey = "";
var impersonatedUserID = "";
var oauthBasePath = "account-d.docusign.com";
var privateKey = Encoding.UTF8.GetBytes(File.ReadAllText("private.key"));
var scopes = new List<string>
{
"signature",
"impersonation",
};
ApiClient _apiClient = new ApiClient();
OAuthToken _OAuthToken = _apiClient.RequestJWTUserToken(
integrationKey,
impersonatedUserID,
oauthBasePath,
privateKey, 1, scopes
);
accessToken = _OAuthToken.access_token;

注意private.key文件的属性"复制到输出目录"应设置为"始终复制"或"如果更新则复制"。

相关内容

最新更新