Saya membuat proyek web dan berjalan dengan baik di Visual studio. Namun, saya mendapatkan kesalahan berikut setelah menerbitkannya ke situs azureweb. Apa yang bisa menyebabkan masalah?
Tidak dapat memuat file atau rakitan 'System.Web.Http.WebHost, Versi = 5.0.0.0, Culture = netral, PublicKeyToken = 31bf3856ad364e35' atau salah satu dari dependensinya. Definisi manifes rakitan yang ditemukan tidak cocok dengan rujukan rakitan. (Pengecualian dari HRESULT: 0x80131040)
Deskripsi: Pengecualian yang tidak ditangani terjadi selama eksekusi permintaan web saat ini. Harap tinjau jejak tumpukan untuk informasi lebih lanjut tentang kesalahan dan dari mana asalnya dalam kode.
Rincian Pengecualian: System.IO.FileLoadException: Tidak dapat memuat file atau perakitan 'System.Web.Http.WebHost, Versi = 5.0.0.0, Budaya = netral, PublicKeyToken = 31bf3856ad364e35' atau salah satu dari ketergantungannya. Definisi manifes rakitan yang ditemukan tidak cocok dengan rujukan rakitan. (Pengecualian dari HRESULT: 0x80131040)
Kesalahan Sumber:
Pengecualian yang tidak tertangani dihasilkan selama eksekusi permintaan web saat ini. Informasi mengenai asal dan lokasi pengecualian dapat diidentifikasi menggunakan jejak tumpukan pengecualian di bawah ini.
Jejak Beban Perakitan: Informasi berikut ini dapat membantu untuk menentukan mengapa perakitan System.Web.Http.WebHost, Versi = 5.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 kinerja yang terkait dengan logging kegagalan bind rakitan. Untuk mematikan fitur ini, hapus nilai registri [HKLM \ Software \ Microsoft \ Fusion! EnableLog].
Berikut ini adalah bagian dari file web.config.
<system.web>
<customErrors mode="Off"/>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers></system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Copy Local
sudah Benar. Anehnya itu menunjukkanRuntime Version
v4.0.30319 bukan v5?Jika Anda masih mencari jawaban, coba periksa utas pertanyaan ini . Itu membantu saya menyelesaikan masalah yang sama.
sunting: Solusi yang membantu saya adalah menjalankan
Update-Package Microsoft.AspNet.WebApi -reinstall
dari manajer paket NugGet, seperti yang disarankan oleh Pathoschild. Saya kemudian harus menghapus file .suo saya dan me-restart VS, seperti yang disarankan oleh Sergey Osypchuk di utas ini .sumber
Saya bertemu dengan masalah yang sama dan saya mengatasinya dengan menetapkan
CopyLocal
true untuk lib berikut:Saya harus menambahkan bahwa saya menggunakan MVC4 dan NET 4
sumber
Bagi saya bekerja menambahkan bagian berikut ke
web.config
file:Contoh ini adalah singkatan dari MVC 5.1. Semoga ini akan membantu seseorang untuk menyelesaikan masalah tersebut.
sumber
Microsoft.AspNet.WebApi.WebHost
paket melalui nuget.Bagi saya itu mulai bekerja setelah memilih "Hapus file tambahan di tujuan" di opsi File publish di bawah pengaturan pada dialog publish.
sumber
Dll hilang di lingkungan yang diterbitkan (dikerahkan). Itulah alasan mengapa ia bekerja di Visual Studio yaitu lokal tetapi tidak di Lingkungan Situs Web Azure.
Cukup lakukan Salin Lokal = true di properti untuk perakitan (System.Web.Http.WebHost) dan kemudian lakukan redeploy, itu akan berfungsi dengan baik.
sumber
Saya menggunakan vs2012 dan saya pikir pembaruan KB2781514 mengubah beberapa pengaturan. Semua System.Web.Http saya di proyek MVC4 saya berubah menjadi false dan saya tetap menerima pesan ini. Saya telah mengubah
All file in this project
properti in publish tetapi tidak berfungsi. Akhirnya saya harus mengubahCopy Local = true
satu per satu dan menyelesaikan masalah ini.sumber
Saya mendapatkan kesalahan yang sama dan saya mengubah versi saya dari 4 menjadi 3 dan ini diselesaikan:
sumber
Saya memiliki masalah yang sama dalam Aplikasi saya.
Anda hanya perlu menyalin
system.web.http.webhost
file dari proyek utama Anda yang Anda jalankan di Visual Studio dan menempelkannya kebin
direktori proyek yang diterbitkan .Setelah ini mungkin menampilkan kesalahan yang sama tetapi nama direktori diubah mungkin
system.web.http
. Ikuti prosedur yang sama seperti di atas. Ini akan berfungsi setelah semua file diunggah. Ini karena paket nuget di Visual Studio yang mereka unduh dari internet tetapi pada server tidak dapat mengunduhnya.Anda dapat menemukan file ini di
bin
direktori proyek Anda .sumber
Ini terjadi pada saya di VS2013 (Pembaruan 5) /ASP.NET 4.5, di bawah jenis proyek "Aplikasi Web" yang mencakup MVC dan Web API 2. Kesalahan terjadi tepat setelah membuat proyek dan sebelum menambahkan kode apa pun. Menambahkan konfigurasi berikut perbaiki untuk saya. Setelah menyelesaikan "System.Web.Helpers" mengeluarkan dua kesalahan serupa yang muncul untuk "System.Web.Mvc" dan "System.Web.WebPages".
sumber
Saya kehilangan beberapa DLL. Bahkan jika saya menyalinnya secara manual ke direktori saat berikutnya saya menerbitkan mereka akan hilang. Masing-masing sudah diatur untuk Menyalin Secara Lokal di VS. Perbaikan untuk saya adalah mengatur masing-masing untuk Menyalin secara Lokal salah, menyimpan, membangun kemudian mengatur masing-masing untuk menyalin secara lokal benar. Kali ini ketika saya menerbitkan semua DLL yang diterbitkan dengan benar. Aneh
sumber
Jika Anda memiliki beberapa proyek dalam solusi Anda dan salah satu proyek Anda gagal dibangun karena kesalahan ini maka pastikan Anda telah menginstal paket nuget Core WebApi dalam proyek itu. Cukup menambahkan referensi ke System.Web.Http tidak membantu, Anda perlu menginstal paket nuget yang benar ke proyek itu.
Saya memiliki beberapa proyek dalam solusi saya dan WebApi Core sudah diinstal di proyek lain. Saya mereferensikan perakitan System.Web.Http dengan mengklik kanan dan mencentang perakitan dari daftar dan itu tidak bekerja pada Azure, meskipun secara lokal itu akan membangun apa-apa. Saya harus menghapus referensi manual dan menambahkan paket nuget Core WebApi untuk setiap proyek yang membutuhkan referensi perakitan.
sumber
Dalam kasus jika "Salin Lokal" sudah Benar, saya kadang menemukan bahwa itu berfungsi jika Anda menghapus file yang telah diterbitkan dan diterbitkan lagi.
Misalnya, jika Anda menggunakan IIS, hapus situs web dan konten direktori tempat penerbitannya, dan publikasikan kembali.
Mungkin ada versi file yang lebih lama di tujuan, jadi untuk memastikan Anda tidak menggunakan versi yang lebih lama, hapus semuanya sebelum menerbitkan lagi.
sumber
Saya menghapus entri berikut dari web.config dan itu berhasil untuk saya.
sumber
Pastikan versi paket sama di seluruh solusi. Saya baru saja menurunkan versi & memutakhirkan
Microsoft.AspNet.Mvc
paket di seluruh solusi dan masalahnya teratasi.sumber