gpt4 book ai didi

asp.net-web-api2 - 在 WebAPI2 项目中加载 System.IdentityModel.Tokens.Jwt dll 时出错

转载 作者:行者123 更新时间:2023-12-02 14:45:37 26 4
gpt4 key购买 nike

我在 WebApi2 项目中收到以下错误:

无法加载文件或程序集“System.IdentityModel.Tokens.Jwt,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的 list 定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

我安装了这些相关的 NuGet 包以及其他一些包:

“Microsoft.IdentityModel.Protocol.Extensions”版本=“1.0.2.206221351”targetFramework=“net45”

“Microsoft.Owin”版本=“3.0.1”targetFramework=“net45”

“Microsoft.Owin.Host.SystemWeb”版本=“3.0.1”targetFramework=“net45”

“Microsoft.Owin.Security”版本=“3.0.1”targetFramework=“net45”

“Microsoft.Owin.Security.ActiveDirectory”版本=“3.0.1”targetFramework=“net45”

“Microsoft.Owin.Security.Jwt”版本=“3.0.1”targetFramework=“net45”

“Microsoft.Owin.Security.OAuth”版本=“3.0.1”targetFramework=“net45”

“System.IdentityModel.Tokens.Jwt”版本=“4.0.2.206221351”targetFramework=“net45”

顺便说一句,我的 web.config 中也有以下绑定(bind)重定向,但它仍然尝试加载 4.0 版本。

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

任何故障排除方面的帮助将不胜感激。

最佳答案

我遇到了完全相同的麻烦。

原因是,最新版本的 System.IdentityModel.Tokens.Jwt 和 System.IdentityModel.Tokens 有一些 NuGet 版本混杂,并且它们与启动 UseJwtBearerAuthentication 方法不兼容,该方法需要 System.IdentityModel v. 4.0.0.0 .

如果您使用 nuget,您可能很容易感到困惑,因为:

System.IdentityModel.Tokens 在 nuget 中可用,就像预发行版 5.0.0.112(现在)一样

Nuget 中的 System.IdentityModel.Tokens.Jwt 最新版本已作为预发布版本 5.0.0.112 或 4.0.2.206221351 稳定版提供。

但是,当您在 WebAPI 中设置 JWT 身份验证时

app.UseJwtBearerAuthentication(new JwtOptions());

需要 System.IdentityModel 版本 4.0.0.0。

我的工作解决方案是:

1)卸载以前安装的System.IdentityModel.Tokens nuget包

Uninstall-Package System.IdentityModel.Tokens

2) 卸载最新的 System.IdentityModel.Tokens.Jwt nuget 包

Uninstall-Package System.IdentityModel.Tokens.Jwt

3) 安装 System.IdentityModel.Tokens.Jwt 版本 4.0.2.206221351(最新稳定版)

Install-Package System.IdentityModel.Tokens.Jwt -Version 4.0.2.206221351

4) 添加对 .NET 框架程序集 System.IdentityModel 的引用(不是 nuget!)。右键单击项目 -> 引用 -> 添加引用 -> 程序集 -> 框架 -> 选择 System.IdentityModel 4.0.0.0

某些步骤可能会有所不同,具体取决于您已安装/卸载的内容。

关于asp.net-web-api2 - 在 WebAPI2 项目中加载 System.IdentityModel.Tokens.Jwt dll 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34410519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com