![](/img/trans.png)
[英]Azure Function | PowerShell | Could not load type 'System.Security.Cryptography.SHA256Cng'
[英]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.