Dav*_*Dev 9 c# identityserver4
我在单元测试失败时遇到了很多困难。具体来说,
JwtRequestAuthorizeTests.authorize_should_accept_complex_objects_in_request_object()
该测试尝试将一个对象参数添加到 Claims 数组中,但失败了,因为在请求通过管道后,缺少一个名为“someObj”的预期参数。
根据记录,someObj它只是一个 json 对象,定义为:
{{
"foo": {
"bar": "bar"
},
"baz": "baz"
}}
Run Code Online (Sandbox Code Playgroud)
另请注意,当我从 GitHub 提取最新的 IdentityServer 代码时,测试通过了。
我发现它失败的原因是因为在方法中JwtRequestValidator.ProcessPayloadAsync(JwtSecurityToken token),变量value的类型与预期不同。具体来说,代码认为这是Microsoft.IdentityModel.Json.Linq.JObject应该的Newtonsoft.Json.Linq.JObject。我一生都无法弄清楚为什么会出现这种情况。
我添加这张图片是为了向您展示我没有疯(或者至少,为什么我不认为我疯了)。value您可以看到从到 的转换JObject失败,如jobj = null,您还可以看到value.GetType()返回Microsoft.IdentityModel.Json.Linq.JObject。
那么 StackOverflow 能否告诉我为什么会发生这种情况,以及如何修复它?
另外,我认为值得注意的是,我引用了 Newtonsoft.Json,因为它应该是: