Auth0 LoginResult无法加载Newtonsoft.Json 10.0.0.0

时间:2018-07-20 04:10:11

标签: c# auth0

在尝试使用LoginAsync SDK来实现Auth0.OidcclientWpf时,我遇到了一种奇怪的情况。我正在使用以下代码:

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(String   jsonString)   System.IdentityModel.Tokens.Jwt.JwtSecurityToken.Decode(String []   tokenParts,字符串rawData)---内部异常堆栈跟踪的结尾   ---在System.IdentityModel.Tokens.Jwt.JwtSecurityToken.Decode(String []   tokenParts,字符串rawData)位于   System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ReadJwtToken(字符串   令牌)   IdentityModel.OidcClient.IdentityTokenValidator.d__4.MoveNext()   >

1 个答案:

答案 0 :(得分:0)

此处存在相同的问题,使用Auth0.OidcClient 2.2.0.0和Newtonsoft.Json版本11.0.0.0。

我也没有解决这个问题的办法。最后,我实现了一个自定义程序集解析处理程序作为解决方法。

为确保这不会影响应用程序的其余部分,我仅在打开登录窗口时临时安装处理程序。我还确保仅加载名为“ Newtonsoft.Json”的程序集。处理程序在执行程序集的文件夹中查找Newtonsoft.Json程序集。