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

前端之家收集整理的这篇文章主要介绍了asp.net-web-api2 – 在WebAPI2项目中加载System.IdentityModel.Tokens.Jwt dll时出错前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在WebApi2项目中收到以下错误

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

我有这些相关的NuGet软件包安装,以及其他一些:

“Microsoft.IdentityModel.Protocol.Extensions”version =“1.0.2.206221351”targetFramework =“net45”

“Microsoft.Owin”version =“3.0.1”targetFramework =“net45”

“Microsoft.Owin.Host.SystemWeb”version =“3.0.1”targetFramework =“net45”

“Microsoft.Owin.Security”version =“3.0.1”targetFramework =“net45”

“Microsoft.Owin.Security.ActiveDirectory”version =“3.0.1”targetFramework =“net45”

“Microsoft.Owin.Security.Jwt”version =“3.0.1”targetFramework =“net45”

“Microsoft.Owin.Security.OAuth”version =“3.0.1”targetFramework =“net45”

“System.IdentityModel.Tokens.Jwt”version =“4.0.2.206221351”targetFramework =“net45”

Btw,我的web.config中有以下绑定重定向,但它仍然尝试加载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和S​​ystem.IdentityModel.Tokens具有一些NuGet版本的mishmash,并且它们与启动UseJwtBearerAuthentication方法不兼容,需要System.IdentityModel v.4.0.0.0.

如果你使用nuget,你可以很容易混淆,因为:

System.IdentityModel.Tokens在nuget中可用,如预发行版5.0.0.112(nowdays)

System.IdentityModel.Tokens.Jwt在nuget中的最新版本可作为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引用(不是nuget!)添加到.NET框架组件System.IdentityModel中.右键单击项目 – >参考文献 – >添加参考 – >装配 – >框架 – >选择System.IdentityModel 4.0.0.0

某些步骤可能会因您已安装/卸载的内容而异.

猜你在找的asp.Net相关文章