gpt4 book ai didi

c# - RSA 处置对象错误 - 每隔一个测试

转载 作者:行者123 更新时间:2023-12-04 01:23:13 26 4
gpt4 key购买 nike

我们有几个测试会生成一个 jwt 请求来调用服务器来检索 token 。我们有 6 个测试,它们使用相同的数据对相同的方法进行相同的调用。这是方法:
'''

    private static string GenerateSignedTokenRequest(
string privateKey,
string privateKeyPass,
string clientID,
string audience,
int lifetime)
{
var jti = Guid.NewGuid().ToString();

var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Jti, jti),
new Claim(JwtRegisteredClaimNames.Sub, clientID),
};

var decodedKey = DecodeRsaPrivateKeyFromPem(
privateKey,
privateKeyPass);

var priDecKey = decodedKey.Private as RsaPrivateCrtKeyParameters;

var rsaParams = DotNetUtilities.ToRSAParameters(priDecKey);

using (var rsa = RSA.Create(rsaParams))
{

var token = new JwtSecurityToken(
clientID,
audience,
claims,
DateTime.Now.AddMinutes(-1),
DateTime.Now.AddSeconds(lifetime),
new SigningCredentials(
new RsaSecurityKey(rsa),
SecurityAlgorithms.RsaSha256));

return new JwtSecurityTokenHandler().WriteToken(token);
}

}

'''

在 WriteToken(token) 方法上运行的每个其他测试中,我们都会收到以下错误:
{"无法访问已处理的对象。\r\n对象名称:'RSA'。"}

令人困惑的是,每个奇数测试都可以很好地运行此代码,但每个偶数测试都失败了。但是当我单独重新运行每个测试时,它们都是绿色的。只有当我一起运行它们时,所有其他测试才会失败。

从 .Net Core 和 Test 框架从 3.1.0 迁移到 3.1.4 时会发生这种情况

enter image description here

最佳答案

因此,问题似乎是升级了适用于 .Net 的 Windows Azure Active Directory IdentityModel 扩展。似乎有一个缓存不受在 RSA.Create() 方法周围放置 using 的影响。通过删除 using,所有测试都是绿色的。

以下是一些帮助我诊断的链接:
https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc

和:

https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/1433

关于c# - RSA 处置对象错误 - 每隔一个测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62307933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com