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

无法加载文件或程序集'System.IdentityModel.Tokens.Jwt,版本= 4.0.0.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自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中也有下面的绑定重定向,但是它仍然尝试加载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版本的混搭,并且与需要System.IdentityModel v。4.0.0.0的启动UseJwtBearerAuthentication方法不兼容。

如果您使用的是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/

10-10 15:59