Fehler beim laden des Systems.IdentityModel.Token.Jwt dll in WebAPI2 Projekt
Bin ich immer die folgende Fehlermeldung in WebApi2 Projekt:
Konnte nicht geladen, Datei oder assembly 'System.IdentityModel.Token.Jwt, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' oder eine Ihrer Abhängigkeiten. Die befindet assembly manifest definition entspricht nicht den Assemblyverweis. (Ausnahme von HRESULT: 0x80131040)
Habe ich diesen Satz im Zusammenhang NuGet-Pakete installiert, zusammen mit einem Haufen anderer:
"Von Microsoft.IdentityModel.Protokoll.Erweiterungen" version="1.0.2.206221351" targetFramework="net45"
"Von Microsoft.Owin" version="3.0.1" targetFramework="net45"
"Von Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net45"
"Von Microsoft.Owin.Security" version="3.0.1" targetFramework="net45"
"Von Microsoft.Owin.Sicherheit.ActiveDirectory" version="3.0.1" targetFramework="net45"
"Von Microsoft.Owin.Sicherheit.Jwt" version="3.0.1" targetFramework="net45"
"Von Microsoft.Owin.Sicherheit.OAuth" version="3.0.1" targetFramework="net45"
"- System.IdentityModel.Token.Jwt" version="4.0.2.206221351" targetFramework="net45"
Btw, ich habe die unten bindungsumleitung in meinem web.config auch, aber es immer noch versucht es zu laden, die version 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>
Jede Hilfe bei der Fehlersuche würde sehr geschätzt werden.
InformationsquelleAutor der Frage SteelBird82 | 2015-12-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lief ich in genau die gleichen Probleme.
Der Grund dafür ist, dass die neuesten Versionen des Systems.IdentityModel.Token.Jwt und System.IdentityModel.Token hat einige NuGet-Versionen Mischmasch und Sie sind nicht kompatibel mit der Inbetriebnahme UseJwtBearerAuthentication Methode erfordert System.IdentityModel v. 4.0.0.0.
Wenn Sie mit nuget, können Sie leicht verwechselt werden, weil:
System.IdentityModel.Token ist verfügbar in nuget nur als pre-release 5.0.0.112 (heutzutage)
System.IdentityModel.Token.Jwt neueste version von nuget verfügbar ist als pre-release-version 5.0.0.112 ODER 4.0.2.206221351 stabil.
ABER, wenn Sie JWT-Authentifizierung in WebAPI
System.IdentityModel, version 4.0.0.0 ist erforderlich.
Die funktionierende Lösung für mich ist:
1) deinstallieren Sie zuvor installierte System.IdentityModel.Token nuget-Paket
2) deinstallieren Sie die neueste System.IdentityModel.Token.Jwt nuget-Paket
3) installieren Sie das System.IdentityModel.Token.Jwt version 4.0.2.206221351 (Letzte stabile)
4) Verweis hinzufügen (nicht nuget!) .NET framework-assembly System.IdentityModel. Rechtsklick auf Projekt -> Referenzen> Verweis Hinzufügen -> Baugruppen -> Rahmen -> wählen Sie System.IdentityModel 4.0.0.0
Einige Schritte können sich abhängig davon unterscheiden, was hast du schon installiert/deinstalliert.
InformationsquelleAutor der Antwort Tomino
In meinem Fall hinzufügen bindungsumleitung hilft.
Ich habe einen windows-Dienst-Anwendung, die verbraucht Microsoft.Owin.Sicherheit.Jwt (3.0.1) und System.IdentityModel.Token.Jwt (4.0.20622.1351); Wie kann ich sehen, Microsoft.Owin.Sicherheit.Jwt (3.0.1) hat Verweis auf die System.IdentityModel.Token.Jwt (4.0.0) [katanaproject]:
Ausnahme oben erwähnt hat ocured genau, Wann der Anruf getätigt wurde:
So kann ich feststellen, dass Paket Microsoft.Owin.Sicherheit.Jwt (3.0.1) versucht zu laden System.IdentityModel.Token.Jwt (4.0.0)
BEARBEITEN
Haben wir einfach .die Netto-app, die verteilt wird mit app.exe.config-Datei. Ändern der Datei, die hilft, das problem zu lösen erwähnt:
InformationsquelleAutor der Antwort stukselbax