2015-12-22 14 views
14

をdllをSystem.IdentityModel.Tokens.Jwt:読み込みエラーは、私がWebApi2プロジェクトで以下のエラーを取得していますWebAPI2プロジェクトで

は、ファイルまたはアセンブリをロードできませんでした「System.IdentityModel.Tokens.Jwt、バージョン= 4.0.0.0 、Culture = neutral、PublicKeyToken = 31bf3856ad364e35 'またはその依存関係の1つ。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 (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" version = "3.0.1" ta rgetFramework = "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"

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> 

トラブルシューティングのヘルプは非常に高く評価されます。

+1

「System.IdentityModel.Tokens」のバージョンが4.0.0.0であることを確認してください。 – Tomino

答えて

24

私はまったく同じ問題に遭遇しました。

理由はSystem.IdentityModel.Tokens.JwtとSystem.IdentityModel.Tokensの最新バージョンは、いくつかのNuGetバージョンが寄せ集めており、彼らはSystem.IdentityModel vを必要と起動UseJwtBearerAuthentication方法に対応していないしていること、である。4.0。 0.0。

あなたがnugetを使用している場合ので、あなたは、簡単に混乱することができます。

System.IdentityModel.Tokensだけのプレリリース5.0.0.112(nowdays)としてnugetで利用可能では

System.IdentityModel .Tokens.Jwt最新バージョンのnugetは、プレリリース版5.0.0.112または4.0.2.206221351の安定版として入手できます。

しかし、あなたは

app.UseJwtBearerAuthentication(new JwtOptions()); 

WebAPIの

にJWT認証を設定するとSystem.IdentityModelバージョン4.0.0.0が必要です。

私のための実用的なソリューションは、次のとおりです。

1)以前にSystem.IdentityModelをインストールアンインストールします。

Uninstall-Package System.IdentityModel.Tokens.Jwt 

3をパッケージnuget最新System.IdentityModel.Tokens.Jwtをアンインストールnugetパッケージ

Uninstall-Package System.IdentityModel.Tokens 

2)トークン)System.IdentityModel.Tokens.Jwtバージョン4.0.2.206221351(最新の安定)

をインストール
Install-Package System.IdentityModel.Tokens.Jwt -Version 4.0.2.206221351 

4).NET FrameworkアセンブリSystem.IdentityModelに参照(not nuget!)を追加します。プロジェクト - >参照 - >参照の追加 - >アセンブリ - >フレームワーク - > System.IdentityModel 4.0.0.0を右クリックしてください。

いくつかの手順は、インストール/アンインストールした内容によって異なる場合があります。

+0

ありがとう、ありがとう、ありがとう! – dviljoen

+1

が働いた! PM>アンインストール・パッケージMicrosoft.Owin.Security.Jwt PM>アンインストール・パッケージSystem.IdentityModel.Tokens.Jwt PM>インストール・パッケージSystem.IdentityModel.Tokens.Jwt -Version 4.0.2.206221351 PM> Install-パッケージMicrosoft.Owin.Security.Jwt – Alex

+0

Worked!ありがとうございました。 –

5

私の場合、binding redirectを追加すると役に立ちます。

私はMicrosoft.Owin.Security.Jwt(3.0.1)System.IdentityModel.Tokens.Jwt(4.0.20622.1351)を消費し、Windowsサービスアプリケーションを、持っています。私が見ることができるように、Microsoft.Owin.Security.Jwt(3.0.1)System.IdentityModel.Tokens.Jwt(4.0.0)[katanaproject]への参照を有する。

<Reference Include="System.IdentityModel.Tokens.Jwt, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\packages\System.IdentityModel.Tokens.Jwt.4.0.0\lib\net45\System.IdentityModel.Tokens.Jwt.dll</HintPath> 
</Reference> 

上記例外呼び出しが行われたときに正確にocuredました:

app.UseJwtBearerAuthentication(new CustomJwtOptions()); 

は、だから私はSystem.IdentityModel.Tokens.Jwt(4.0をロードしようとそのパッケージMicrosoft.Owin.Security.Jwt(3.0.1)を締結することができます。 0)

EDIT

我々はapp.exe.configファイルと一緒に配布されたシンプルな.NETアプリケーションを、持っています。ファイルを変更すると、上記の問題を解決するのに役立ちます。

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<!-- ... --> 
<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-4.0.20622.1351" 
          newVersion="4.0.20622.1351" /> 
     </dependentAssembly> 
     <!-- ... --> 
    </assemblyBinding> 
    <!-- ... --> 
</runtime> 
<!-- ... --> 
</configuration> 
+0

私はあなたが説明したのとまったく同じ問題に着いた。実際にあなたはそれを解決するために何をしましたか?あなたが言ったとき、私は本当に理解できませんでした。「私の場合は、バインディングリダイレクトの追加が役立ちます。 – tyrion

+0

答えを編集し、より明瞭なサンプルを追加しました。 – stukselbax

+0

ありがとうございました。 – tyrion

関連する問題