2015-12-22 8 views
14

मैं WebApi2 परियोजना में नीचे त्रुटि हो रही है:लोड करने में त्रुटि WebAPI2 परियोजना में dll System.IdentityModel.Tokens.Jwt

फ़ाइल या विधानसभा '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"

"माइक्रोसॉफ्ट.ऑविन। सुरक्षा" संस्करण = "3.0.1" टा 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"

बीटीडब्ल्यू, मेरे पास मेरे 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 संस्करणों घपला है और वे स्टार्टअप UseJwtBearerAuthentication तरीका है जिसके System.IdentityModel वी की आवश्यकता के साथ संगत नहीं कर रहे हैं। 4.0। 0.0।

आप nuget उपयोग कर रहे हैं, आप आसानी से भ्रमित किया जा सकता है क्योंकि:

System.IdentityModel.Tokens nuget में उपलब्ध है पूर्व जारी 5.0.0.112 (nowdays) बस के रूप में

System.IdentityModel .Nuget में .Tokens.Jwt नवीनतम संस्करण प्री-रिलीज़ संस्करण 5.0.0.112 या 4.0.2.206221351 स्थिर के रूप में उपलब्ध है।

लेकिन, जब आप वेबएपीआई

में जेडब्ल्यूटी प्रमाणीकरण सेट
app.UseJwtBearerAuthentication(new JwtOptions()); 

System.IdentityModel संस्करण 4.0.0.0 आवश्यक है।

मेरे लिए काम कर समाधान है:

1) पहले से System.IdentityModel स्थापित स्थापना रद्द करें।टोकन पैकेज 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!) जोड़ें। IdentityModel। प्रोजेक्ट पर राइट क्लिक करें -> संदर्भ -> संदर्भ जोड़ें -> असेंबली -> फ्रेमवर्क -> सिस्टम का चयन करें। इंडेंटिटी मॉडल 4.0.0.0

कुछ कदम अलग-अलग हो सकते हैं जो आपने पहले ही इंस्टॉल/अनइंस्टॉल किया है।

+0

धन्यवाद, धन्यवाद, धन्यवाद! – dviljoen

+1

काम किया !! PM> स्थापना रद्द करें-पैकेज Microsoft.Owin.Security.Jwt PM> स्थापना रद्द करें-पैकेज System.IdentityModel.Tokens.Jwt PM> इंस्टॉल करें-पैकेज System.IdentityModel.Tokens.Jwt -संस्करण 4.0.2.206221351 PM> Install- पैकेज Microsoft.Owin.Security.Jwt – Alex

+0

काम किया! धन्यवाद। –

5

binding redirect जोड़ने में मेरे मामले में मदद करता है।

मैं एक खिड़कियों सेवा अनुप्रयोग, जो Microsoft.Owin.Security.Jwt खपत है (3.0.1) और System.IdentityModel.Tokens.Jwt (4.0.20622.1351); मैं देख सकते हैं, Microsoft.Owin.Security.Jwt (3.0.1) (4.0.0)[katanaproject]System.IdentityModel.Tokens.Jwt के संदर्भ में है:

<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()); 

तो मुझे लगता है कि पैकेज Microsoft.Owin.Security.Jwt (3.0.1)System.IdentityModel.Tokens.Jwt (4.0 लोड करने के लिए कोशिश करता है निष्कर्ष निकाल सकते हैं। 0)

संपादित

हम साधारण .net अनुप्रयोग है, जो app.exe.config फ़ाइल के साथ वितरित किया जाता है है। फ़ाइल को संशोधित करना समस्या का उल्लेख किया हल करने के लिए मदद करता है:

<?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

संबंधित मुद्दे