【发布时间】:2021-10-23 01:34:20
【问题描述】:
我在单元测试失败时遇到了很多困难。具体来说,
JwtRequestAuthorizeTests.authorize_should_accept_complex_objects_in_request_object()
测试尝试将 Object 参数添加到 Claims 数组,但失败了,因为在请求通过管道后,缺少名为“someObj”的预期参数。
为了记录,someObj 只是一个定义为的 json 对象:
{{
"foo": {
"bar": "bar"
},
"baz": "baz"
}}
另外记录一下,当我从 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,因为它应该是:
【问题讨论】:
-
我今天也遇到了这个问题,你解决了吗?
-
不,对不起,伙计。太久远了,记不得了。
标签: c# identityserver4