Situs berhenti bekerja di asp.net System.Web.WebPages.Razor.Configuration.HostSection tidak dapat dilemparkan ke

115

Saya punya masalah seperti ini di server

[A] System.Web.WebPages.Razor.Configuration.HostSection tidak dapat dilemparkan ke [B] System.Web.WebPages.Razor.Configuration.HostSection. Tipe A berasal dari 'System.Web.WebPages.Razor, Versi = 2.0.0.0, Budaya = netral, PublicKeyToken = 31bf3856ad364e35' dalam konteks 'Default' di lokasi 'C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '. Tipe B berasal dari 'System.Web.WebPages.Razor, Versi = 1.0.0.0, Budaya = netral, PublicKeyToken = 31bf3856ad364e35' dalam konteks 'Default' di lokasi 'C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '.

Deskripsi: Terjadi pengecualian yang tidak tertangani selama eksekusi permintaan web saat ini. Harap tinjau pelacakan tumpukan untuk informasi lebih lanjut tentang kesalahan dan dari mana asalnya dalam kode.

Detail Pengecualian: System.InvalidCastException: [A] System.Web.WebPages.Razor.Configuration.HostSection tidak dapat dilemparkan ke [B] System.Web.WebPages.Razor.Configuration.HostSection. Tipe A berasal dari 'System.Web.WebPages.Razor, Versi = 2.0.0.0, Budaya = netral, PublicKeyToken = 31bf3856ad364e35' dalam konteks 'Default' di lokasi 'C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '. Tipe B berasal dari 'System.Web.WebPages.Razor, Versi = 1.0.0.0, Budaya = netral, PublicKeyToken = 31bf3856ad364e35' dalam konteks 'Default' di lokasi 'C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '.

Kesalahan Sumber:

Saya telah menginstal MVC 3 di serer dan di komputer saya. Saya telah mencoba menggantinya dengan basis kode berusia 15 hari tetapi masalah yang sama ada.

sekarang saya ingin menyelesaikannya. Apakah seseorang tahu bagaimana saya bisa memperbaikinya.

pengguna2632851
sumber
Sepertinya dalam aplikasi Anda beberapa rakitan memiliki ketergantungan pada berbagai versi pisau cukur. Coba periksa rakitan Anda dengan ildasm atau .NET Reflector untuk melihat ketergantungannya.
Paulo Morgado

Jawaban:

200

Di root Web.config pastikan assemblyBinding berisi versi yang tepat untuk assembly "System.Web.WebPages.Razor" dan "System.Web.Mvc". Periksa keberadaan mereka yang sebenarnya serta tag rakitan "System.Web.WebPages.Razor" saya hilang yang menyebabkan kesalahan. Saya menetapkan versi assembly saya masing-masing ke 3.0 dan 5.0 pada saat penulisan ini dengan pembaruan NuGet lengkap. Kode akan terlihat seperti di bawah ini. PublicKeyToken akan tetap sama di antara versinya. Bersulang!

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <!--some more bidings-->
  <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor"
            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="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
<!--some more bidings-->
</assemblyBinding>
Ian Flynn
sumber
2
Bekerja untuk saya. Saya kehilangan informasi Razor dan MVC menunjuk ke versi yang salah.
Hoakie
Situasi yang sama seperti @Hoakie - memperbarui Razor ke 3.0.0 dan MVC ke 5.0.0 dan tidak ada referensi Perakitan tergantung Razor, dan MVC masih mengatakan oldVersion = "1.0.0.0-4.0.0.0" newVersion = "4.0.0.0". Menambahkan XML Razor dependentAssembly di atas dan mengubah 4.0.0.0 menjadi 5.0.0.0 dan paman Anda Bob.
Scott Baker
2
Ini berhasil untuk saya, terima kasih. Saya memang memiliki "System.Web.WebPages" dengan binding yang benar tetapi tidak berfungsi sampai saya juga menambahkan kunci Razor. Namun di proyek lain saya tidak harus melakukan itu, saya tidak yakin apa perbedaannya dan mengapa binding kelas super tidak dapat menangani Razor. Apakah ada yang tahu jawabannya?
Shane
Sama disini. Saya memiliki entri MVC tetapi bukan yang Razor. Sekarang bekerja. Terima kasih.
Yves Tkaczyk
Ini bekerja stackoverflow.com/questions/17454852/…
Rodolpho Brock
40

Kasus saya ditingkatkan dari mvc4 ke mvc5.

Saya memastikan referensi saya sinkron (dengan aplikasi mvc5 yang baru dibuat), memperbarui file web.config sesuai dan masih tidak berfungsi. Akhirnya berhasil ketika saya mengubah file web.config saya ( INSIDE THE VIEWS directory ) dari:

<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>

Untuk ini:

<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>

INGAT: stop iis (ekspres atau asli), solusi bersih, bangun dan Jalankan.

pengguna3141889
sumber
Saya pikir tanggapan ini seharusnya menjadi jawaban sebenarnya. Pengikatan assembly biasanya tidak masalah saat menggunakan pendekatan update-package untuk mengupgrade dari mvc4 ke mvc5.
Roman
34

Untuk berjaga-jaga jika jawaban ian tidak cukup (dan rakitannya benar, tetapi castingnya masih salah) kemungkinan Anda belum memperbarui <configSections>untuk mencerminkan rakitan baru. pastikan bagian assembly juga mereferensikan System.Web.WebPages.Razorlibrary versi 3.0 . misalnya

<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" />
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" />
</sectionGroup>

(Perhatikan bahwa mereka semua merujuk version=3.0.0sekarang)

Brad Christie
sumber
8
Saya hanya menambahkan bahwa jika Anda tidak dapat menemukan pengaturan ini di root Web.Config, periksa juga folder Web.Config di Views.
gligoran
4
Ya, masalahnya adalah folder Tampilan web.config untuk saya.
Matthew Nichols
15

Solusi Ian berhasil dalam satu proyek, tetapi untuk yang lain saya memerlukan info yang lebih lengkap di Cara Upgrade ke MVC 5 dan Web API 2

Ken Mc
sumber
Artikel ini melakukannya untuk saya. Terima kasih!
gligoran
Menurut saya artikel ini berisi deskripsi upgrade yang paling benar dan lengkap, terima kasih.
Mikhail Brinchuk
1

Masalah ini sangat umum ketika Anda mengembangkan untuk MVC 4 dan kemudian secara tiba-tiba Anda menginstal paket yang tersedia di versi yang lebih baru sehingga merusak seluruh aplikasi.

Satu-satunya solusi untuk masalah tersebut adalah meningkatkan seluruh aplikasi Anda ke yang lebih baru atau menginstal paket lama yang kompatibel dengan aplikasi Anda

Ninja Pemrograman
sumber
1

Masalah:

[A] System.Web.WebPages.Razor.Configuration.HostSection tidak dapat dilemparkan ke [B] System.Web.WebPages.Razor.Configuration.HostSection. Tipe A berasal dari 'System.Web.WebPages.Razor, Versi = 2.0.0.0, Budaya = netral, PublicKeyToken = 31bf3856ad364e35' dalam konteks 'Default' di lokasi 'C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll '. Tipe B berasal dari 'System.Web.WebPages.Razor, Versi = 3.0.0.0, Budaya = netral, PublicKeyToken = 31bf3856ad364e35' dalam konteks 'Default' di lokasi 'C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Berkas ASP.NET Sementara \ rbs.ceds.todomvcdemo \ 73d0b7c7 \ 46e3986d \ assembly \ dl3 \ 21020800 \ 101279fc_da94cf01 \ System.Web.WebPages.Razor.dll '.

Identifikasi:

Kesalahannya ada pada file konfigurasi yaitu web.config dari proyek Anda.

Di sini Anda akan menemukan bahwa versi Razor disetel ke 2.0.0.0 sedangkan dalam proyek Anda versi 2.0.0.0 tidak tersedia.

Larutan:

Sederhana, cukup ubah versinya dari 2.0.0.0 menjadi 3.0.0.0 dan itu akan melakukan keajaiban.

ketik = "System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Versi = 3.0.0.0 type =" System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor , Versi = 3.0.0.0

Anda tidak perlu menempatkan pengalihan atau karena itu akan membuat segalanya menjadi rumit.

berbasis kode
sumber
0

Saya menemukan masalah dan solusi.

1 Saya menargetkan kode saya ke 4.0 dan kemudian mengunggah kode dan berhasil. Sebelumnya saya juga memperbarui kode saya ke asp.net MVC 4.

sekarang berhasil :)

pengguna2632851
sumber
3
Bisakah kamu lebih spesifik?
nwayve
0

Buka dua lokasi file dll di sistem Anda, salin salah satu dari dll di lokasi file Anda ke yang lain
dan coba jalankan proyek.

pengguna4287068
sumber
0

Cara lain untuk memperbaikinya, tanpa harus memperbarui referensi adalah ini

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Pages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.2.0.0" newVersion="1.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
Fernando Gonzalez Sanchez
sumber