C# RSA处理对象错误-每隔一次测试
我们有几个测试生成一个jwt请求来调用服务器来检索令牌。我们有6个测试,它们使用相同的数据对相同的方法进行相同的调用。方法如下: ''' ''' 在WriteToken(令牌)方法上运行的每一个其他测试都会出现以下错误: {“无法访问已释放的对象。\r\n对象名:'RSA'。” 令人困惑的是,每个奇数测试都可以很好地运行此代码,但每个偶数测试都失败了。但当我单独重新运行每个测试时,它们都是绿色的。只有当我一起运行它们时,其他测试才会失败 当从.Net核心和测试框架从3.1.0迁移到3.1.4时,就会发生这种情况C# RSA处理对象错误-每隔一次测试,c#,.net-core,jwt,rsa,C#,.net Core,Jwt,Rsa,我们有几个测试生成一个jwt请求来调用服务器来检索令牌。我们有6个测试,它们使用相同的数据对相同的方法进行相同的调用。方法如下: ''' ''' 在WriteToken(令牌)方法上运行的每一个其他测试都会出现以下错误: {“无法访问已释放的对象。\r\n对象名:'RSA'。” 令人困惑的是,每个奇数测试都可以很好地运行此代码,但每个偶数测试都失败了。但当我单独重新运行每个测试时,它们都是绿色的。只有当我一起运行它们时,其他测试才会失败 当从.Net核心和测试框架从3.1.0迁移到3.1.4时,
因此,问题似乎是.Net的Windows Azure Active Directory IdentityModel扩展的升级。似乎有一个缓存不受RSA.Create()方法的影响。通过移除“使用”,所有测试均为绿色 以下是帮助我诊断的几个链接: 以及: 更新此
new SigningCredentials(
new RsaSecurityKey(rsa),
SecurityAlgorithms.RsaSha256)
到
参考资料:不确定您的意思。这在VisualStudio中可以很好地编译。结尾部分正好在分号之前。var token=new JwtSecurityToken(clientID、访问群体、声明、DateTime.Now.AddMinutes(-1)、DateTime.Now.AddSeconds(生存期)、新签名凭证(new RsaSecurityKey(rsa)、SecurityAlgorithms.rsasa256));啊,我错过了。禁用第二个链接建议的缓存为我解决了这个问题。这在.NET5中确实对我有效
new SigningCredentials(
new RsaSecurityKey(rsa),
SecurityAlgorithms.RsaSha256)
new SigningCredentials(
new RsaSecurityKey(rsa),
SecurityAlgorithms.RsaSha256){
CryptoProviderFactory = new CryptoProviderFactory { CacheSignatureProviders = false }
}