繁体   English   中英

MSOnline 无法加载类型“System.IdentityModel.Tokens.JwtSecurityToken”

[英]MSOnline Could not load type 'System.IdentityModel.Tokens.JwtSecurityToken'

我有一个 asp.net 核心 Web 应用程序,它使用MSOnline PowerShell 模块与 Office 365 交互。当Connect-MsolService cmdlet 执行以使用 Office 365 进行身份验证时,我收到以下错误。

无法从程序集“System.IdentityModel.Tokens.Jwt,版本=5.1.5.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”加载类型“System.IdentityModel.Tokens.JwtSecurityToken”。

通过单元测试在另一个项目中运行相同的逻辑时,我没有收到错误消息,代码按预期执行。 测试项目和 Web 项目都使用System.IdentityModel.Tokens.Jwt程序集的相同版本 (5.1.5),所以我不明白为什么在 Web 应用程序中执行该逻辑时会收到此错误。

我读过一个解决方案是降级到System.IdentityModel.Tokens.Jwt程序集的 v4,但我知道它适用于 5.1.5,因为我的测试通过了。 此外,这对我来说不是一个选择,因为某些 aspnetcore 程序集需要 v5。 有谁知道为什么会在 asp.net 核心 Web 应用程序中发生这种情况,或者知道不需要降级程序集的解决方案吗?

更新:

看起来我的绑定重定向导致了问题。 如果我将以下内容添加到我的测试项目中的 app.config 文件中,则会产生错误。 这很奇怪,因为 5.1.5 是所引用的System.IdentityModel.Tokens.Jwt版本,就好像默认情况下使用了不同的版本。

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.IdentityModel.Tokens.Jwt" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.4.0.0" newVersion="5.1.5.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

我最终通过消除System.IdentityModel.Tokens.Jwt的绑定重定向来解决这个问题。 绑定重定向是自动创建的,因为我使用了Auto-generate binding redirects选项。 我决定禁用该选项并手动管理绑定重定向以消除不需要的重定向。

为了简单起见,我只是从输出配置文件中复制了自动生成的绑定重定向,并将它们粘贴到我的项目 app.config 文件中。 然后,我删除了System.IdentityModel.Tokens.Jwt重定向并禁用了Auto-generate binding redirects选项,它仅使用我的 app.config 文件中的重定向而不是生成它们来解决问题。

我仍然不明白为什么重定向会导致该错误,希望有人最终会对此有所了解,但幸运的是我找到了解决方法。

需要注意的一件事是,如果您的任何依赖项使用该程序集的不同版本,这显然不起作用。 对我来说幸运的是,情况并非如此,至少目前是这样。

我设法通过更新程序集绑定以排除Connect-MsolService正在使用的System.IdentityModel.Tokens.Jwt版本来使其工作。 这奏效了。 我更新的程序集绑定是:

<dependentAssembly>
        <assemblyIdentity name="System.IdentityModel.Tokens.Jwt" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="5.0.0.0-5.6.0.0" newVersion="5.6.0.0" />
</dependentAssembly>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM