Không thể tải tệp hoặc lắp ráp 'Newtonsoft.Json, Phiên bản = 4.5.0.0, Culture = trung tính, PublicKeyToken = 30ad4fe6b2a6aeed'


233

Tôi đang nhận được lỗi

System.IO.FileLoadException: Không thể tải tệp hoặc tập hợp 'Newtonsoft.Json, Version = 4.5.0.0, Culture = trung tính, PublicKeyToken = 30ad4fe6b2a6aeed' hoặc một trong các phụ thuộc của nó. Định nghĩa tệp kê khai của cụm lắp ráp không khớp với tham chiếu lắp ráp. (Ngoại lệ từ HRESULT: 0x80131040)

cho xây dựng CI của tôi

Giải pháp mà tôi đã thử

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
        culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

Nó cũng không hoạt động


Lỗi có nghĩa là .NET không thể tìm thấy thư viện Json.NET . Bạn đã cài đặt nó chưa?
TypeIA

22
Chính xác cùng một vấn đề - lái tôi hạt dẻ. Hãy cho tôi biết nếu bạn tìm thấy một giải pháp
Dean phấn

Trên thực tế, đối với tôi thêm những gì bạn đã cố gắng giải quyết vấn đề.
h.alex

Sử dụng tùy chọn hợp nhất trong trình quản lý gói NuGet để đảm bảo các phiên bản không bị tách rời.
niico

Đây là điều duy nhất phù hợp với tôi: github.com/Redth/PushSharp/issues/361#issuecomment-181387928
RichC

Câu trả lời:


237

Trong bảng điều khiển quản lý gói thực thi : Update-Package –reinstall Newtonsoft.Json.

CẬP NHẬT

Ban đầu tôi đã đăng bài này dưới dạng một bình luận nhưng như @OwenBlacker đề nghị tôi sẽ chỉ đưa nó vào đây:

Nếu bạn vẫn gặp lỗi sau khi thực hiện việc này, thì điều cuối cùng đã làm cho tôi là tôi đã xóa <dependentAssembly>phần của Json.Net khỏi .configtệp của mình . Cài đặt lại mang nó trở lại nếu nó không ở đó và rõ ràng bạn cần phải xóa nó. Cho đến khi có một giải pháp bình thường trong gói, tôi sợ bước thủ công này là bắt buộc.

Lưu ý: Vui lòng đọc các bình luận bên dưới trước khi làm điều này.

Theo nhận xét của René bên dưới, hãy TUYỆT VỜI rằng lệnh được đăng trong câu trả lời sẽ cài đặt lại gói trong mọi dự án trong giải pháp của bạn. Vì vậy, nếu bạn sử dụng gói Newtonsoft.Json trong một số dự án và có thể sử dụng các phiên bản khác nhau, chỉ cần thực hiện lệnh trên có thể có những hậu quả không mong muốn.


7
Vì lợi ích của tất cả mọi người khi đọc điều này: Tôi đã làm điều đó và vẫn gặp lỗi. Sau đó, tôi đã giải quyết nó bằng cách nào đó: Thật ngạc nhiên, tôi phải xóa<dependentAssembly> phần của Json.Net khỏi .configtệp của mình . Cài đặt lại mang nó trở lại nếu nó không ở đó và rõ ràng bạn cần phải xóa nó. Cho đến khi có một giải pháp bình thường trong gói, tôi sợ bước thủ công này là bắt buộc.
Ofer Zelig

@OferZelig Bạn nên đăng nó dưới dạng một câu trả lời riêng biệt, để nó có thể nhận được các upvote (và quan trọng hơn là tăng sự chú ý). Không phải ít nhất vì nó cũng hiệu quả với tôi :)
Owen Blacker

@OwenBlacker cảm ơn. Nhưng vì đã có rất nhiều câu trả lời rồi nên tôi sẽ bị lạc. Và câu trả lời này khá hay, chỉ là nếu nó không hoạt động thì bình luận của tôi "hoàn thành" nó. Bạn biết gì? Tôi đoán tôi sẽ chỉ chỉnh sửa câu trả lời ban đầu. Quan trọng hơn là đạt được đại diện riêng.
Ofer Zelig

43
TUYỆT VỜI rằng lệnh được đăng trong câu trả lời sẽ cài đặt lại gói trong mọi dự án trong giải pháp của bạn. Vì vậy, nếu bạn sử dụng gói Newtonsoft.Json trong một số dự án và có thể sử dụng các phiên bản khác nhau, chỉ cần thực hiện lệnh trên có thể có những hậu quả không mong muốn.
René

Đã giải quyết! Đối với tôi, tôi đã cài đặt v6 trong một dự án, cài đặt lại từ trình quản lý gói đã đưa nó lên v7.
jv-dev

123

Để mọi người gặp vấn đề với phiên bản Newtonsoft.Json v4.5, hãy thử sử dụng phiên bản này trong web.config hoặc app.config:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
           <assemblyIdentity name="Newtonsoft.Json"
               publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
           <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
       </dependentAssembly>
    </assemblyBinding>
</runtime>

QUAN TRỌNG : Kiểm tra xem configurationthẻ của tệp cấu hình của bạn không có thuộc tính không gian tên (như được đề xuất trong https://stackoverflow.com/a/12011221/150370 ). Nếu không, assemblyBindingcác thẻ sẽ bị bỏ qua.


3
đối với tôi, việc xóa nội dung của thư mục bin theo cách thủ công sau khi làm sạch (không làm trống nó) đã thực hiện thủ thuật sau khi tôi áp dụng câu trả lời này.
Mikaël Mayer

Cảm ơn rất nhiều cho điều này! :)
Kamron K. 8/1/2015

Hoạt động tuyệt vời! Kể từ ngày 7/4/15, phiên bản hiện tại của Newtonsoft.Json là 7.0.0 vì vậy newVersion="6.0.0.0"phải đổi thành newVersion="7.0.0.0"hoặc bất kỳ phiên bản nào bạn đang sử dụng
Moses Machua

3
Ghi chú đó trên không gian tên ... Tôi có thể ôm bạn. Tôi đã đốt cháy hàng giờ vì điều này không biết các chuyển hướng ràng buộc đã bị bỏ qua vì điều đó.
Brian

1
Lưu ý về không gian tên rất quan trọng đến nỗi nó có thể là một câu trả lời của riêng nó. Cảm ơn rât nhiều.
beawolf

42

Điểm chính là tham chiếu đúng phiên bản trong tệp cấu hình của bạn.

Các bước;

1- xem phiên bản Newtonsoft.Json.dll của bạn trong thuộc tính tham chiếu dự án là phiên bản nào trong thư mục gói của bạn (Ví dụ: phiên bản của tôi là 7.0.1 và Phiên bản tham chiếu là 7.0.0.0)

2- nhìn vào những gì dự án mong đợi từ bạn trong trường hợp ngoại lệ (của tôi là 6.0.0.0)

3- Thêm lắp ráp phụ thuộc vào tập tin cấu hình của bạn như nó cần ..

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json"  publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>

Xin lỗi chỉ có thể cho một phiếu bầu điểm của bạn (Ví dụ: điểm của tôi là 7.0.1 và Phiên bản giới thiệu là 7.0.0.0) đã tạo ra sự khác biệt lớn. Tôi sẽ cho nhiều hơn ..... Cảm ơn :)
Zaker 8/12/2015

Điều này làm việc cho tôi. Tôi đã cập nhật phiên bản lên 7, nhưng nó thực sự đang chạy phiên bản 8 vì vậy tôi mới thay đổi newVersion thành 8.0, cảm ơn!
Keith

Mặc dù đã cài đặt 8.0.3 (như đã nói trong trình quản lý gói nuget), nhưng theo các tham chiếu vẫn là 8.0.0. Vì vậy, tôi đã thay đổi thành 8.0.0.0 trong web.config. Wierd làm thế nào điều này làm việc ngày hôm qua khi tôi công bố mọi thứ và sáng nay nó không hoạt động nữa.
CularBytes

24

Tôi không gặp may với bất kỳ giải pháp nào được trình bày ở đây (gỡ cài đặt, cài đặt lại, xóa tham chiếu, tạo ràng buộc, v.v.) Tôi phải quay lại phiên bản cũ của Newtonsoft. Phiên bản 5.0.6 đã hoạt động trước đó, vì vậy tôi đã thử bản đó. Tôi đã phải nhập hai lệnh này trong Bảng điều khiển gói:

uninstall-package newtonsoft.json -force

install-package newtonsoft.json -version "5.0.6"

Các -forcetùy chọn trong lệnh đầu tiên là cần thiết để buộc gỡ bỏ cài đặt. Sự phụ thuộc với các hội đồng khác ngăn chặn việc gỡ cài đặt mà không có nó.


Làm việc như người ở. Có lỗi trong dự án MVC 4 của tôi. Hầu như chuyển sang serializer bản địa.
Kees C. Bakker

cảm ơn, tôi chỉ cần thay đổi chuyển đổi "5.0.6" thành -pre: gói cài đặt newtonsoft.json -pre
thiago.adriano26

22

Tôi đã khắc phục sự cố khi thêm chuyển hướng ràng buộc này vào tệp .config của mình:

<runtime>
    . . . 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
                culture="neutral" />
            <bindingRedirect oldVersion="4.5.0.0" newVersion="6.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

Thông báo lỗi phàn nàn về việc không tìm thấy phiên bản 4.5.0.0, phiên bản hiện tại của Newtonsoft.Json là 6.0.0.0 vì vậy chuyển hướng phải đi từ 4.5 đến 6.0, không phải ngược lại


Vâng, điều này đã giải quyết vấn đề của tôi. Thật kỳ lạ khi số lượng vấn đề JSON.NET gây ra .. nhưng một khi nó trở thành một cỗ máy mơ ước. Cảm ơn +1
Piotr Kula

Đoạn mã của bạn khiến tôi nhận ra là thiếu phần tử 'assemblyBinding'. Cảm ơn
Riga

21

Tôi nghĩ rằng bạn đang chỉ đến mục tiêu sai, thay đổi nó thành 4,5 thay vì 6.0

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
        culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="4.5.0.0" />
</dependentAssembly>

Điều này nên làm việc.


1
Umbraco 7 yêu cầu 4.5.0.0, vì vậy điều này đã giúp khởi động và chạy
MagicalArmouch

19

Tôi đã dành vài ngày để giải quyết vấn đề bực bội này. Tôi đã thử khá nhiều thứ có thể tìm thấy trên web. Cuối cùng tôi thấy rằng lỗi này có thể được gây ra (như trong trường hợp của tôi) bởi các phiên bản dự án .Net khác nhau (4.5 và 4.5.1) trong một giải pháp. Các bước dưới đây đã sửa nó cho tôi:

  1. Kiểm tra kỹ phiên bản .Net của mọi dự án trong giải pháp của bạn. Chỉ cần nhấp chuột phải vào dự án và đi đến Properties.

nhập mô tả hình ảnh ở đây

  1. Nếu có thể, hãy đặt cùng một phiên bản .Net cho tất cả các dự án. Nếu không, ít nhất hãy cố gắng thay đổi dự án Khởi động một (đối với tôi, đây là một trong những nguyên nhân gây ra vấn đề).

  2. Loại bỏ tất cả các Newtonsoft.Jsongói từ giải pháp.

    uninstall-package newtonsoft.json -force

  3. Cập nhật tất cả các Newtonsoft.Jsonphiên bản trong tất cả packages.configcác tệp, như vậy

    <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />

  4. Cài đặt lại Newtonsoft.Jsontừ "Bảng điều khiển quản lý gói" với:

    install-package newtonsoft.json

  5. Xây dựng lại giải pháp

(Tùy chọn) 7. Nếu bạn thay đổi dự án Khởi động, hãy trả lại


12
uninstall-package newtonsoft.json -force
install-package newtonsoft.json

Đã lừa tôi :)


1
điều này cũng đã lừa tôi Nó tự động cập nhật tệp webconfig thành phiên bản chính xác.
Shaakir

Tôi cũng vậy, điều này thực sự có ích.
Mike Malter

11

nếu bạn sử dụng nhiều dự án trong cùng một giải pháp và thư viện của một kiểm tra khác thì tất cả các dự án đều có cùng một phiên bản của Newtonsoft.Json


Đây là vấn đề của tôi. Rất bực bội khi đi qua tất cả các phản hồi ở trên và không nhận được kết quả. Cuối cùng đã tìm ra nó khi tôi bận tâm kiểm tra phiên bản của dll trong thư mục Build của tôi.

10

Loại bỏ lắp ráp Newtonsoft.Json khỏi tham chiếu dự án và thêm nó một lần nữa. Bạn có thể đã xóa hoặc thay thế dll một cách tình cờ.


Cách tiếp cận này hoạt động chống lại một dự án Xamarin Forms iOS nơi tôi đã bỏ gói NuGet và thêm lại nó. Cảm ơn.
Thượng nghị sĩ

9

Tôi đang viết một ứng dụng khách dịch vụ WebApi REST, vì vậy đối với tôi, lỗi này là do thêm Tài liệu tham khảo vào System.Net.HttpSystem.Net.Http.Formattinglắp ráp thủ công thông qua Thêm tài liệu tham khảo, khi tôi nên thêm Microsoft.AspNet.WebApi.Clientgói qua NuGet . Xem thêm câu trả lời này cho một câu hỏi khác .


8

Bạn có 2 phiên bản khác nhau của thư viện JSON.NET trong giải pháp của mình. Để giải quyết điều này, bạn nên nâng cấp chúng lên phiên bản mới nhất. Thực hiện theo các bước sau:

Trình khám phá giải pháp 1-Mở 2-Nhấp chuột phải vào tên giải pháp 3-Chọn Quản lý gói Nuget cho Giải pháp 4-Chọn Cập nhật từ menu 5-Cập nhật gói JSON.NET

Điều này sẽ giải quyết vấn đề của bạn.

liên kết: Không thể tải tệp hoặc lắp ráp 'Newtonsoft.Json, Phiên bản = 7.0.0.0, Culture = trung tính, PublicKeyToken = 30ad4fe6b2a6aeed' hoặc một trong các phụ thuộc của nó


Cách dễ nhất và an toàn nhất để khắc phục vấn đề này. Cảm ơn @mohammad
deanwilliammills

7

Triển khai phiên bản chính xác cho máy CI

Điều này cho bạn biết rằng trình nạp lắp ráp đã tìm thấy một phiên bản Newtonsoft.Jsonlắp ráp khác, không khớp với tham chiếu bạn đã tạo trong dự án của mình. Để tải lắp ráp chính xác, bạn phải triển khai lắp ráp bên cạnh mã được biên dịch của mình hoặc cài đặt phiên bản chính xác của lắp ráp trong máy đích (nghĩa là trong GAC).

Thay thế: đảm bảo cấu hình nằm trong tệp chính xác

Nếu bạn muốn giữ giải pháp hiện tại và tải một bản lắp ráp với một phiên bản khác, hãy đảm bảo rằng cấu hình bạn đã đăng nằm trong .configtệp chính xác . Hãy nhớ rằng không có xpto.dll.config, một DLL được tải bởi một ứng dụng luôn sử dụng tệp cấu hình của ứng dụng đang chạy.


6

Thông thường việc thêm chuyển hướng ràng buộc sẽ giải quyết vấn đề này, nhưng nó không hoạt động với tôi. Sau vài giờ đập đầu vào tường, tôi nhận ra rằng có một thuộc tính xmlns gây ra sự cố trong web.config của tôi. Sau khi xóa thuộc tính xmlns khỏi nút cấu hình trong Web.config, các chuyển hướng liên kết hoạt động như mong đợi.

http://www.davepaquette.com/archive/2014/10/02/could-not-load-file-or-assinstall-newtonsoft-json-version4-5-0-0.aspx


5
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json"
        publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>

Hoạt động với tôi .... chỉ cần đặt phiên bản bạn đang sử dụng trong newVersion tức là (newVersion = "7.0.0.0")


Có vấn đề này một số lần trước và điều này đã được khắc phục trong một lần nhấn. Cảm ơn rât nhiều.
GutierrezDev

5

Đóng giải pháp.

Mở packages.config*.csproj với trình soạn thảo văn bản và xóa bất kỳ dòng nào có Newtonsoft.Json

Ví dụ:
<Reference Include="Newtonsoft.Json,Version=9.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll</HintPath> <Private>True</Private> </Reference>

Hoặc là <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net40" />

Mở lại giải pháp và cài đặt lại Newtonsoft.Json bằng cách Install-Package Newtonsoft.Json

Nó làm việc cho tôi.


đôi khi nó hoạt động nhưng trong các bản dựng sắp tới, vấn đề này lại xuất hiện lần nữa
Heemanshu Bhalla

Không có vấn đề gì nếu không cập nhật nó haha. Tạo dự án rác và cài đặt Newtonsoft.Json.dll, sao chép nó (tệp dll) và thêm vào tham chiếu dự án của bạn.
Trương Quốc Khánh

4

Chúng tôi đã có cùng một vấn đề mà bạn đề cập. Chúng tôi đang sử dụng nunit để chạy thử nghiệm thông qua CI và chúng tôi có nunit đang chạy một tệp có tên tests.nunit, mô tả danh sách các đồ đạc dll thử nghiệm để chạy.

Mỗi thiết bị kiểm tra có tệp cấu hình riêng, nhưng khi chạy qua tệp "tests.nunit", các chuyển hướng ràng buộc dường như bị bỏ qua. Giải pháp là thêm các chuyển hướng ràng buộc vào một tệp cấu hình mới, "tests.config" bên cạnh tệp "tests.nunit".


bạn có thể xây dựng?
KirstieBallance

4

Tôi đã có cùng loại vấn đề. Và tôi cũng đã giải quyết nó chỉ bằng cách thực hiện như sau: Chuyển đến CÔNG CỤ > Trình quản lý gói NuGet và Chọn Bảng điều khiển quản lý gói . Cuối cùng, thực hiện hai lệnh sau :)

  1. gỡ cài đặt gói newtonsoft.json -force
  2. gói cài đặt newtonsoft.json

4

Bạn nên cập nhật tệp web.config trong máy chủ. Khi nuget cài đặt NewtonSoft, hãy cập nhật tệp này bao gồm mã này

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
  </dependentAssembly>
</assemblyBinding>


Trong trường hợp đó chính xác là giải pháp của tôi, hãy đưa vào app.config. "Phiên bản hội có thể được chuyển hướng trong ứng dụng, chính sách của nhà xuất bản hoặc tệp cấu hình máy."
datps


3

Tôi đã phạm sai lầm khi thêm tệp NewtonSoft.

Dự án chính của tôi 4,5, nhưng khi tôi thêm một dự án bổ sung vào giải pháp của mình, nó đã thêm nó một cách kỳ lạ như một dự án .Net 2.0 ... và khi tôi cố gắng sử dụng 4.5 dll của NewtonSoft với điều này, tôi đã nhận được "Newtonsoft.Json cann 't được tìm thấy "lỗi.

Giải pháp (tất nhiên) là thay đổi dự án mới này từ .Net 2.0 thành 4.5.


3

Trong trường hợp của tôi, dự án chính vẫn tham chiếu một phiên bản cũ của Newtonsoft.Json không còn tồn tại trong dự án nữa (được hiển thị bằng dấu chấm than màu vàng). Xóa tham chiếu đã giải quyết vấn đề, không cần ràng buộcRedirect.


3

Tôi đã có cùng một vấn đề với phiên bản 7.0.0.0 và lib gây ra sự cố của tôi là Microsoft.Rest.ClientR.78 , bằng cách nào đó đã đề cập đến phiên bản sai (6.0.0.0) của Newtonsoft.json, mặc dù quản lý phụ thuộc đúng trong nugget ( phiên bản đúng của newtonsoft.json (7.0.0.0) đã được cài đặt).

Tôi đã giải quyết điều này bằng cách áp dụng chuyển hướng ở trên từ 6.0.0.0 đến 7.0.0.0 (từ Kadir Can) trong tệp cấu hình:

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0" />

----> Sau một vài ngày mà không thay đổi bất cứ điều gì, nó lại xuất hiện với cùng một lỗi. Tôi đã cài đặt phiên bản 6.0.0.0 n và cập nhật lên 7.0.0.0, nó hoạt động tốt.


Đã làm cho tôi. Phiên bản đã cài đặt Newtonsoft Json 7.0.1 (beta), nhưng cấu hình được tạo ra đã trỏ đến 6.0.0.0, điều này không đúng. Cảm ơn!
Dhanuka777

2

Trong trường hợp của tôi, sau khi tải xuống tập hợp và thêm tham chiếu vào dự án, tôi đã giải quyết điều này bằng cách 'bỏ chặn' DLL trước khi thêm tham chiếu vào dự án.

Sử dụng Windows explorer, duyệt đến vị trí DLL, nhấp chuột phải vào DLL và sau đó chọn 'thuộc tính'. Bạn sẽ tìm thấy nút 'bỏ chặn' trên một trong các tab và sau đó bạn có thể thêm tham chiếu và lắp ráp sẽ tải chính xác.


2

Không có gì từ phía trên giúp tôi, nhưng những gì thực sự đã sửa nó là như sau:

  1. Xóa tất cả các ràng buộc phụ thuộc trong app.config (khỏi tất cả các tệp app.config trong giải pháp)
  2. Thực hiện lệnh sau từ "Bảng điều khiển quản lý gói"

Nhận dự án-Tất cả | Add-BindingRedirect

  1. Tái tạo

Tham khảo: http://blog.myget.org/post/2014/11/27/Could-not-load-file-or-assugging-NuGet-Assugging-Redirects.aspx


2

Nhấp chuột phải vào dự án của bạn, chọn quản lý các gói Nuget, nhập newtonsoft vào hộp tìm kiếm và cài đặt phiên bản mới nhất. Sau đó chạy ứng dụng của bạn


2

Tôi đã phải đối mặt với cùng một lỗi và vật lộn với nó trong nhiều giờ. Tôi đã có một dự án API web đang sử dụng Newtonsoft.json và một dự án UnitTest khác cho dự án API web. Dự án thử nghiệm đơn vị cũng cần tham chiếu Newtonsoft.json. Nhưng khi thêm liên kết tôi đã nhận được ngoại lệ trên.

Cuối cùng tôi đã giải quyết nó bằng cách thêm đoạn mã dưới đây vào app.config của dự án thử nghiệm đơn vị:

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

<lệ thuộc phụ thuộc>
mukulsharma1146

Tôi đã gặp vấn đề tương tự khi tôi nâng cấp Nestwonsoft.Json trong khi vẫn sử dụng và phiên bản cũ của WebAPI, và điều này đã giải quyết nó. Cảm ơn!
Gavin.Paolucci.Kleinow

2

Một vấn đề quỷ quyệt khác là dường như các chuyển hướng ràng buộc chỉ có thể âm thầm thất bại nếu phần tử có cấu hình không chính xác trên bất kỳ phần tử phụ thuộc nào khác.

Đảm bảo rằng bạn chỉ có một yếu tố dưới mỗi yếu tố.

Trong một số trường hợp, VS tạo ra điều này:

  <dependentAssembly>
    <assemblyIdentity ...
    <assemblyIdentity ...
  </dependentAssembly>

Thay vì

  <dependentAssembly>
    <assemblyIdentity ...
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity ...
  </dependentAssembly>

Mất một thời gian dài tôi mới nhận ra đây là vấn đề!


2

Phần bên dưới thêm vào web.config của bạn

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
           <assemblyIdentity name="Newtonsoft.Json"
               publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
           <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
       </dependentAssembly>
    </assemblyBinding>
</runtime>

2

Nếu lỗi biến mất cục bộ và vẫn xuất hiện trên máy chủ, giải pháp phù hợp với tôi là xóa thư mục bin và gói.config và web.config và tải lại các tệp này

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.