Saya punya sedikit masalah aneh.
Saya mengembangkan aplikasi dengan MVC 4 dan API Web baru dan berfungsi dengan baik secara lokal. Saya menginstal MVC4 di server dan menerapkan aplikasi. Sekarang saya mendapatkan kesalahan berikut:
Tidak dapat memuat file atau rakitan 'System.Net.Http, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' atau salah satu dependensinya. Definisi manifes rakitan terletak tidak cocok dengan referensi rakitan. (Pengecualian dari HRESULT: 0x80131040)
Deskripsi: Pengecualian tidak tertangani terjadi selama eksekusi permintaan web saat ini. Harap tinjau jejak tumpukan untuk informasi lebih lanjut tentang kesalahan dan dari mana asalnya
Cukup lucu, versi System.Net.Http yang saya miliki secara lokal di folder paket saya atau di folder ASP.NET MVC 4 \ Assemblies adalah 1.0.0.0. Saya benar-benar menghapus referensi ke System.Net.Http dari proyek saya, tetapi saya masih mendapatkan pesan yang sama. Saya agak bingung tentang dari mana ia mendapatkan referensi 2.0.0.0 dan mengapa itu akan bekerja secara lokal tetapi tidak di server.
Melihat dependensi nuget:
Pustaka Inti API ASP.NET WEb (Beta) bergantung pada System.Net.Http.Formatting.
Dan System.Net.Http.Formatting tergantung pada System.Net.Http.
Saya rasa dari sanalah ini berasal. Tetapi saya sudah menginstal Versi 2.0.20126.16343 dari paket ini, hanya saja dll di dalamnya memiliki versi 1.0.0.0
Apakah saya melewatkan sesuatu?
MEMPERBARUI:
Ini adalah sub-aplikasi dari aplikasi ASP.NET lain, tetapi yang lainnya masih didasarkan pada WebForms. Jadi, ada sesuatu yang kacau balau. Tetapi jika saya melakukan pembersihan di bawah bagian perakitan di web.config jika tidak menemukan aplikasi itu sendiri lagi.
Jawaban:
Saya memiliki masalah yang sama dengan penerapan aplikasi saya ke appharbor. Masalah itu belum mendukung .NET 4.5. Apa yang saya lakukan.
sumber
Saya mengalami kesalahan yang sama saat menyebarkan aplikasi web yang sebelumnya dikonversi (dari .NET 4.5 ke 4.0) di IIS 6.0.
Di bagian runtime web.config yang saya temukan
yang telah saya ubah menjadi
Sekarang bekerja seperti pesona.
sumber
Milik saya bekerja dengan:
Perhatikan pengalihan 1-4 ke 2.0
sumber
Di folder Referensi proyek Anda harus ada referensi ke dll ini, dan versinya harus 2.0.0.0. Pastikan ini disetel ke Salin Lokal = true. Dan kemudian pastikan itu menemukan jalannya ke folder bin aplikasi server Anda.
Ini adalah salah satu perpustakaan yang sekarang dikelola oleh nuget. Jadi buka Nuget dan pastikan semuanya up to date. Dan di direktori paket proyek Anda, file tersebut harus ada di sini:
\packages\System.Net.Http.2.0.20126.16343\lib\net40
Anda juga dapat mencoba membuat aplikasi MVC4 baru dan melihat apakah file tersebut muncul untuk aplikasi itu.
sumber
Copy local
ke true yang menyelesaikannya! lebih mudah / lebih baik daripada bermain-main di file web.config. Cukup tambahkan dll ke folder bin Anda.Dalam kasus saya, saya memperbaikinya dengan cara yang jauh lebih mudah, cukup berikan HintPath ke referensi ke paket nuget:
sumber
Dalam kasus saya, saya secara tidak sengaja menambahkan ketergantungan ke System.Net.Http versi 2.1.10.0 melalui NuGet. Saya tidak bisa menyingkirkannya di NuGet Package Manager (karena paket lain sepertinya bergantung padanya). Namun paket tersebut tidak bergantung pada versi khusus ini. Inilah yang saya lakukan untuk menghilangkannya (Anda juga dapat menggunakan konsol NuGet sebagai gantinya (menggunakan parameter –force):
sumber
Dalam file config saya menghapus Majelis dependen:
Sekarang berfungsi dengan baik.
sumber
Saya menghadapi masalah ini di server uji (Windows 2008 R2) yang seharusnya "siap" untuk penyebaran;)
Petunjuknya adalah ketika saya memeriksa versi System.net antara mesin DEV saya dan server penerapan, mereka tidak cocok.
Diperbaiki menggunakan langkah-langkah di bawah ini:
Mengunduh .NET Framework 4.5 Penginstal mandiri dari SINI
Jalankan pemasang di mesin penerapan
Pasca instalasi kerangka kerja, server ingin reboot, begitu pula dengan volla! Kami siap berangkat !!
sumber
Kami menggunakan VS 2013, membuat MVC 4 Web API baru dan memiliki masalah dengan system.net.http.dll yang bukan versi yang benar saat dibuat di server TeamCity kami, tetapi versi ini berfungsi dengan baik di mesin pengembang lokal kami yang memiliki VS 2013 terpasang.
Kami akhirnya menentukan masalahnya.
Saat membuat API Web MVC 4 baru dan memilih kerangka kerja 4.0 pada pembuatan proyek, kami menemukan versi paket NuGet yang benar untuk DLL sedang dimasukkan: .. \ packages \ Microsoft.Net.Http.2.0.20710.0 \ lib \ net40 \ System.Net.Http.dll
Namun file .csproj untuk proyek ini mengatakan jalur untuk file system.net.http.dll ini adalah: .. \ packages \ Microsoft.Net.Http.2.0.30506.0 \ lib \ net40 \ System.Net.Http.dll
Jadi, ketika build dicoba gagal pada perbedaan jalur ini tetapi menemukan versi kerangka yang benar dari file di tempat lain di mesin pengembang tetapi tidak di server build TeamCity kami.
Sejauh ini, hanya inilah perbedaan yang kami temukan. Mengubah jalur dalam file .csproj dan membangun mesin Dev lokal dengan VS2013 masih berfungsi.
Memeriksa itu ke dalam kontrol versi dan memiliki server build TeamCity kami (tanpa VS 2013 diinstal secara lokal) sekarang menemukan versi yang benar dari .dll di folder paket NuGet untuk solusinya dan berhasil membangun daripada mencari versi lain dari system.net.http .dll dan menemukan versi yang lebih baru yang tidak cocok dengan kerangka kerja sehingga menyebabkan kegagalan pembuatan.
Tidak yakin apakah ini membantu.
Periksa jalur file proyek Anda untuk DLL dan pastikan itu cocok dengan jalur folder paket Anda untuk DLL.
sumber
Hanya menyederhanakan jawaban lain untuk apa yang berhasil bagi saya.
Saya pergi ke manajer NuGet, menghapus paket terkait (Dalam kasus saya, "Perpustakaan Klien 2.1 Microsoft ASP.NET Web API" dan "Json.NET") dan menginstalnya kembali. Hanya butuh beberapa klik.
sumber
Tutup proyek, Buka lagi. Kemudian, Solusi Bersih + Bangun. Bekerja untuk saya
sumber
Untuk versi 2.2.15.0, saya melakukan ini:
sumber
Saya mengalami masalah yang sama persis! Saya melihat tab Peringatan saya di VS dan melihat bahwa salah satu paket nuget saya secara TIDAK LANGSUNG merujuk ke .NETFramework Version 4.5.0.0. Saya harus menghapus paket ini dan kemudian menginstal ulang versi 4.0 tetapi pastikan untuk menentukan versi paket yang mendukung 4.0 (secara default akan kembali ke 4.5 saya percaya jika Anda tidak menentukan saat menginstal paket). Semoga ini membantu!
sumber
Kami mengalami ini terjadi di server setelah penerapan. Itu disebabkan oleh:
A) File lama di folder bin masih berkeliaran yang seharusnya telah dihapus
atau
B) Tidak memiliki akses baca ke folder untuk pengguna Application Pool Identity.
Dengan kata lain, bagi kami ini diselesaikan dengan memperbaiki izin pada folder untuk situs dan menghapus folder bin dan menerapkan ulang.
sumber
Saya memiliki masalah yang sama dengan Gembox.spreadsheet.dll versi 31.
Saya mencoba hampir semuanya dari artikel ini dan tidak ada yang berhasil. Itu baru saja diperbaiki dengan langkah sederhana.
Saya mencoba membangun proyek individu yang pada dasarnya mengatur referensi versi yang benar untuk dll dan kesalahan itu sepenuhnya hilang dari solusi.
sumber
Pergi ke masalah serupa dan arahan yang disebutkan dalam banyak komentar berfungsi dengan baik
Meskipun, Anda harus memastikan cakupan versi lama cukup tinggi jika tidak, versi yang lebih baru mungkin tidak dialihkan ke versi tertentu yang Anda butuhkan dan lokasi yang menggunakan referensi yang lebih baru tidak akan berfungsi dengan baik karena referensi yang lebih lama sudah ada di direktori bin.
sumber
Untuk kesalahan ini (dan yang serupa), ada baiknya melalui Konsolidasi NuGet (Solusi> Kelola Paket NuGet ...) untuk memastikan versi komponen referensi yang sama konsisten di setiap pustaka kelas yang dirujuk dalam solusi, karena bahkan versi yang sedikit lebih lama mungkin memiliki ketergantungan pada komponen lama lainnya. Ini mudah digunakan bersama dengan Pembaruan dan dapat menghemat banyak rasa sakit.
Ini memecahkan masalah ini untuk saya dan saya akan mengatakan itu adalah suatu keharusan untuk membiasakan jika Anda membuat perpustakaan pembantu yang juga mereferensikan MVC atau komponen NuGet berbasis web lainnya.
sumber