Tidak dapat memuat file atau rakitan 'System.Web.Mvc'

200

Aplikasi Web ASP.NET MVC baru saya berfungsi di workstation pengembangan saya, tetapi tidak berjalan di server web saya ...


Kesalahan Server dalam Aplikasi '/'.


Kesalahan Konfigurasi

Deskripsi: Terjadi kesalahan selama pemrosesan file konfigurasi yang diperlukan untuk melayani permintaan ini. Harap tinjau detail kesalahan khusus di bawah ini dan modifikasi file konfigurasi Anda dengan tepat.

Pesan Kesalahan Parser: Tidak dapat memuat file atau perakitan 'System.Web.Mvc, Versi = 1.0.0.0, Budaya = netral, PublicKeyToken = 31bf3856ad364e35' atau salah satu dari ketergantungannya. Sistem tidak dapat menemukan berkas yang dicari.

Kesalahan Sumber:

Line 44:         <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 45:         <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 46:         <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 47:         <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Line 48:         <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

File Sumber: C: \ inetpub \ www.example.org \ web.config Baris: 46

Jejak Beban Perakitan: Informasi berikut ini dapat membantu untuk menentukan mengapa perakitan System.Web.Mvc, Versi = 1.0.0.0, Budaya = netral, PublicKeyToken = 31bf3856ad364e35 'tidak dapat dimuat.

WRN: logging yang mengikat perakitan dimatikan.
Untuk mengaktifkan logging kegagalan ikatan bind, atur nilai registri [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) ke 1.
Catatan: Ada beberapa penalti performa yang terkait dengan kegagalan perakitan bind assembly.
Untuk mematikan fitur ini, hapus nilai registri [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Informasi Versi: Microsoft .NET Framework Versi: 2.0.50727.3053; Versi ASP.NET: 2.0.50727.3053


Apakah saya perlu menginstal AspNetMVCBeta-setup.msi di server? Atau ada penginstal yang berbeda untuk server?

masukkan deskripsi gambar di sini

Zack Peterson
sumber

Jawaban:

215

Saya baru saja menulis posting blog yang membahas hal ini. Anda dapat menginstal ASP.NET MVC di server Anda ATAU Anda dapat mengikuti langkah - langkah di sini .


EDIT: (oleh jcolebrand) Saya telah melalui tautan ini, kemudian memiliki masalah yang sama dengan Victor di bawah , jadi saya sarankan Anda juga menambahkan ini:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor
Haacked
sumber
6
Catatan: Saat Anda menginstal MVC4 (beta saat ini), Anda ingin mengambil v1.0 dari DLL tersebut, Anda juga ingin mengambil System.Web.Helpers (setidaknya saya perlu).
Tracker1
1
-1 Posting Anda yang Anda tautkan, tidak menjelaskan cara mendapatkan Microsoft.Web.Infrastruktur ke server web melalui mekanisme Penerbitan. Harus menginstal hal-hal di server secara langsung, jenis sux.
Mark Rogers
1
dengan visual studio 2010 ini menjadi lebih mudah seperti yang dijelaskan di sini: britishdeveloper.co.uk/2011/06/…
Daniël Tulp
atau di sini jika Anda tidak menggunakan Web Deploy, britishdeveloper.co.uk/2011/05/...
Jeroen K
Saya harus menyemprot folder bin dan kemudian Publikasikan lagi, yaitu, jika Anda tidak menggunakan Paket Menyebarkan.
Robert Koch
41

Saya mengalami masalah yang sama dengan sgriffinusa. Selain referensi artikel Phil menyarankan: http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx . Saya menambahkan ini:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

Penempatan GoDaddy bekerja dengan sempurna. Matikan kesalahan khusus dan tambahkan referensi untuk memperbaiki kesalahan. Itu akan menuntun Anda ke arah yang benar.

Victor Juri
sumber
26

Menginstal MVC langsung di server web Anda adalah salah satu pilihan, karena rakitan akan diinstal di GAC. Anda juga dapat menggunakan majelis majelis, yang mungkin membantu menjaga server Anda bersih dari majelis pra-rilis sampai rilis final tersedia.

Phil Haack memposting artikel yang bagus beberapa hari yang lalu tentang cara menggunakan MVC bersama dengan aplikasi Anda, jadi tidak perlu menginstal secara langsung:

http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx

Matt Rudder
sumber
25

Saya mengalami masalah yang sama mencoba untuk menyebarkan aplikasi web MVC3 Razor saya di GoDaddy shared hosting. Ada beberapa .dlls tambahan yang perlu direferensikan. Detail di sini: http://paulmason.biz/?p=108

Pada dasarnya Anda perlu menambahkan referensi ke yang berikut ini selain yang terdaftar di pos @ Haacked dan mengaturnya untuk digunakan secara lokal seperti yang dijelaskan.

  • Infrastruktur Microsoft.Web
  • System.Web.Razor
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor
sgriffinusa
sumber
Terima kasih sobat, setelah secara manual menambahkan referensi dan kemudian menyebarkannya secara lokal itu memang memperbaiki masalah untuk MVC3!
Stefanvds
Hal yang sama di sini. Panduan yang bagus untuk menambahkan DLL tambahan itu. Terima kasih!
Mike L
Hal yang sama di sini. Bukan di GoDaddy tetapi di server perusahaan saya, jadi ini pasti kasus umum.
TJKjaer
13

Di VS2010, klik kanan proyek di Solution Explorer dan pilih 'Add Deployable Dependencies'. Kemudian centang kotak centang terkait MVC dalam dialog berikut.

Ini membuat folder '_bin_deployableAssemblies' dalam proyek yang berisi semua file .dll yang disebutkan dalam jawaban lain. Saya percaya ini bisa disalin ke folder bin ketika membuat paket penerapan.

warrickh
sumber
9

Memperbaiki sederhana. Di VS2010, klik kanan pada proyek MVC Anda, pilih "Tambahkan Deployable Dependencies ...", pilih opsi yang Anda inginkan dan klik ok

Gandar
sumber
8

Solusi Cepat & Sederhana: Saya menghadapi masalah ini dengan Microsoft.AspNet.Mvc -Versi 5.2.3 dan setelah melalui semua utas ini saya menemukan solusi paling sederhana.

Cukup ikuti langkah-langkah:

  1. Buka NuGet Package Manager di Visual studio untuk proyek Anda
  2. Cari untuk Microsoft.AspNet.Mvc
  3. Saat ditemukan, ubah tindakan ke Copot-instal dan Copot-instal
  4. Setelah selesai, pasang kembali dan coba sekarang

Ini secara otomatis akan memperbaiki semua masalah dengan referensi. Lihat gambar di bawah ini:

masukkan deskripsi gambar di sini

Muhammad Amir
sumber
7

Punya masalah yang sama dan menambahkan semua majelis yang mereka katakan tetapi masih mendapat kesalahan yang sama.

ternyata Anda perlu membuat " Versi Spesifik " = Salah.

Versi spesifik harus salah.

Romeo
sumber
Atau Anda dapat beralih 'Salin Lokal' ke 'Benar' jika tidak diaktifkan,
AStopher
6

Kami ingin menambahkannya karena kami membuat perpustakaan kelas yang menggunakannya.

Bagi saya itu ada di sini ...

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies

Dave Shinkle
sumber
3

Jika Anda TIDAK menggunakan penyedia hosting, dan Anda memiliki akses ke server untuk menginstal ... Kemudian instal alat pembaruan MVC 3, lakukan itu ... itu akan menghemat berjam-jam masalah pada mesin windows 2003 server / IIS6. , Saya berkomentar di halaman ini di sini Nuget.Core.dll nomor versi tidak cocok

Tom Stickel
sumber
3

Selain pos Haack, Hanselman juga memiliki pos serupa. BIN Mempekerjakan ASP.NET MVC 3 dengan Razor ke Windows Server tanpa MVC terpasang

Bagi saya, solusi "Copy Local = true" tidak cukup karena referensi proyek situs web saya tidak menyertakan semua dll yang hilang. Seperti yang Scott sebutkan di posnya, saya juga perlu mendapatkan tambahan dll dari folder berikut di kotak pengembangan saya: C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET Web Pages \ v1.0 \ Assemblies. Pesan kesalahan memberi tahu saya yang dll hilang.

James Lawruk
sumber
3

Saya telah melakukan "Pembaruan-Paket – Instal ulang Microsoft.AspNet.Mvc" untuk memperbaikinya di Visual Studio 2015.

Olaj
sumber
3

Pertimbangan penting adalah file web.config, Beberapa paket dapat mengacaukan pengalihan mengikat Anda yang menyebabkan kekacauan (paket jahat itu dalam paket rumah yang saya tidak menghapus web.config dari paket atau memastikan web.config di dalam paket. tidak memiliki pengalihan yang mengikat. Misalnya dengan menghapus duplikat dan simpul yang salah menyelesaikan ini

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>


                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>


                <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

dengan menghapus garis 8 hingga 24 perbaikan build.

PBo
sumber
2

Periksa juga versi perakitan di web.config di dalam folder Views Anda dan pastikan cocok. Saya kadang lupa ada web.config kedua di lokasi itu.

Dave
sumber
2

Saya memiliki masalah yang sama dengan banyak file rakitan setelah memindahkan proyek ke solusi lain.

Bagi saya, web.configfile itu mencoba menambahkan rakitan ini:

<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Pikir referensi dalam proyek mengarah ke versi 3.0.0.0(klik pada referensi dan gulir ke bagian bawah properti). Karenanya saya baru saja mengubah versi referensi dalam web.configfile.

Saya tidak tahu apakah ini hanya semacam bug. Masalah dengan menambahkan semua referensi lain adalah bahwa referensi muncul di file konfigurasi tetapi sebenarnya tidak direferensikan sama sekali dalam proyek (di dalam solusi explorer) dan file yang diperlukan tidak disalin dengan sisa file proyek, mungkin karena tidak ada"copy local = true"

Sekarang, saya tidak dapat menemukan majelis ini di majelis yang dapat ditambahkan (dengan mengklik kanan referensi dan mencoba menambahkannya dari majelis atau ekstensi). Sebaliknya saya membuat solusi MVC baru yang menambahkan semua rakitan dan referensi yang saya butuhkan, dan menemukan mereka di bawah referensi proyek baru di explorer solusi dan menemukan jalan mereka di jendela properti untuk referensi.

Lalu saya hanya menyalin perpustakaan yang saya butuhkan ke proyek lain dan referensi

Mikael Puusaari
sumber
1

Setelah mencoba semuanya dan masih gagal ini adalah solusi saya: saya ingat saya punya dan kesalahan terakhir memperbarui versi MVC di Visual studio saya jadi saya menjalankan proyek dari Visual studio lain (komputer berbeda) dan kemudian mengunggah dll-s dan itu berhasil. mungkin itu akan membantu seseorang ...

Matan L
sumber
0

Saya menggunakan Jenkins dengan proyek .net dan memiliki masalah dengan referensi MVC 4.

Saya akhirnya memecahkan masalah saya dengan menggunakan fungsionalitas mesin pencari referensi Net berdasarkan. Registri menggunakan:

"HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ v2.0.50727 \ AssemblyFoldersEx"

Anda dapat membuat subkunci dan mengatur kunci default ke "c: \ myreferenceedir" misalnya.

Ini menyelamatkan saya dengan versi MVC dan juga halaman web ASP.net.

Berguna untuk menambah referensi ke "Tambah Referensi Dialog"

http://dhakshinamoorthy.wordpress.com/2011/12/04/how-to-register-your-net-assembly-in-gac-and-make-it-show-in-add-reference-dialog/

Jenzo
sumber
0

Seperti yang disebutkan orang lain, tambahkan referensi ini ke studio visual dengan Copy Localset ke true. (Saya juga harus menambahkan System.Web.Webpages)

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
System.Web.Webpages
roo2
sumber
0

Saya menambahkan "Microsoft ASP.NET Razor" menggunakan Manage NuGet Packages.

Dengan Tambah Referensi, untuk beberapa alasan, saya hanya punya System.Web.Helpers 1.0.0 dan 2.0.0 ... tetapi tidak 3.0.0.

Opsi lain, yang berfungsi dari saya adalah menghapus referensi ke System.Web.Mvc dan System.Web.Http ... kemudian menambahkannya kembali ke lokasi paket di file csproj (Anda dapat dengan mudah mengedit proyek dengan editor teks):

<Reference Include="System.Web.Http">
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>

<Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
Brian Rice
sumber