Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RSA处理对象错误-每隔一次测试_C#_.net Core_Jwt_Rsa - Fatal编程技术网

C# RSA处理对象错误-每隔一次测试

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时,

我们有几个测试生成一个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 }
        }