Auth0 LoginResult 无法加载 Newtonsoft.Json 10.0.0.0
Posted
技术标签:
【中文标题】Auth0 LoginResult 无法加载 Newtonsoft.Json 10.0.0.0【英文标题】:Auth0 LoginResult not able to load Newtonsoft.Json 10.0.0.0 【发布时间】:2018-12-28 07:37:07 【问题描述】:我在尝试使用Auth0.OidcclientWpf
SDK 实现LoginAsync
时遇到了一种奇怪的情况。我正在使用以下代码:
private async void PerformAuthenticationAsync()
Auth0Client auth0Client = new Auth0Client(new Auth0ClientOptions()
Domain = "mydomain",
ClientId = "clientid"
);
var extraParameters = new Dictionary<string, string>();
extraParameters.Add("connection", "connectionParam");
var result = await auth0Client.LoginAsync(extraParameters: extraParameters);
执行身份验证过程后,我收到错误:
Not able to load NewtonSoftJson.dll version - 10.0.0.0
来源是Identitymodel.oidclient
。在将IdentityModelEventSource.ShowPII
设置为True
之后,我可以在跟踪中看到我正在寻找的令牌已收到,但LoginResult
无法解码标头。
我尝试在我的项目中引用 NewtonSoft.Json dll
版本 10.0.2。现在我得到了这样的异常:
Not able to load NewtonSoftJson.dll version 11.0.0.0
这一次甚至没有启动浏览器来输入凭据。
我很困惑我应该参考哪个版本的NewtonSoft.Json
dll?我将我的IdentityModel.oidcclient
更新到了最新版本。即使在那之后IdentityModel.Oidcclient.LoginResult
仍在抱怨NewtonSoft.Json version 10.0.0.0
不可用。
我不确定真正的问题是什么。我是否必须参考两个版本(10 和 11)以及如何做到这一点?如果有人可以提供帮助,我将不胜感激。
更新
下面是我得到的踪迹-
System.TypeInitializationException:类型初始化器 'System.IdentityModel.Tokens.Jwt.JsonExtensions' 引发异常。 ---> System.IO.FileLoadException:无法加载文件或程序集'Newtonsoft.Json,版本=10.0.0.0,文化=中性, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (来自 HRESULT 的异常:0x80131040)在 System.IdentityModel.Tokens.Jwt.JsonExtensions..cctor() --- 结束 内部异常堆栈跟踪 --- 在 System.IdentityModel.Tokens.Jwt.JsonExtensions.DeserializeJwtHeader(字符串 jsonString) 在 System.IdentityModel.Tokens.Jwt.JwtSecurityToken.Decode(String[] tokenParts, String rawData) --- 内部异常堆栈跟踪结束 --- 在 System.IdentityModel.Tokens.Jwt.JwtSecurityToken.Decode(String[] tokenParts,字符串 rawData) 在 System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ReadJwtToken(字符串 令牌)在 IdentityModel.OidcClient.IdentityTokenValidator.d__4.MoveNext() >
【问题讨论】:
【参考方案1】:同样的问题,Auth0.OidcClient 2.2.0.0 和 Newtonsoft.Json 版本 11.0.0.0。
对于这个问题,我也没有真正的解决方案。最后,我实现了一个自定义程序集解析处理程序作为解决方法。
为了确保这不会影响应用程序的其余部分,我只是在登录窗口打开时临时安装处理程序。我还确保只加载名为“Newtonsoft.Json”的程序集。处理程序在执行程序集的文件夹中查找 Newtonsoft.Json 程序集。
【讨论】:
以上是关于Auth0 LoginResult 无法加载 Newtonsoft.Json 10.0.0.0的主要内容,如果未能解决你的问题,请参考以下文章