Site asp.net System.Web.WebPages.Razor.Configuration.HostSection içinde çalışmayı durdurdu


115

Sunucuda böyle bir sorunum var

[A] System.Web.WebPages.Razor.Configuration.HostSection, [B] System.Web.WebPages.Razor.Configuration.HostSection'a dönüştürülemez. A tipi, 'C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System konumunda' Varsayılan 'bağlamında' System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = nötr, PublicKeyToken = 31bf3856ad364e35 'kaynağından kaynaklanır .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll'. B tipi, 'C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System konumunda' Varsayılan 'bağlamında' System.Web.WebPages.Razor, Version = 1.0.0.0, Culture = nötr, PublicKeyToken = 31bf3856ad364e35 'kaynaklıdır .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll'.

Açıklama: Mevcut web isteğinin yürütülmesi sırasında işlenmeyen bir istisna oluştu. Hata ve kodda nereden kaynaklandığı hakkında daha fazla bilgi için lütfen yığın izlemeyi inceleyin.

Özel Durum Ayrıntıları: System.InvalidCastException: [A] System.Web.WebPages.Razor.Configuration.HostSection, [B] System.Web.WebPages.Razor.Configuration.HostSection'a dönüştürülemez. A tipi, 'C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System konumunda' Varsayılan 'bağlamında' System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = nötr, PublicKeyToken = 31bf3856ad364e35 'kaynağından kaynaklanır .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll'. B tipi, 'C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System konumunda' Varsayılan 'bağlamında' System.Web.WebPages.Razor, Version = 1.0.0.0, Culture = nötr, PublicKeyToken = 31bf3856ad364e35 'kaynaklıdır .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll'.

Kaynak Hatası:

MVC 3'ü serer ve bilgisayarıma kurdum. 15 günlük kod tabanıyla değiştirmeyi denedim ama aynı sorun var.

şimdi çözmek istiyorum. Birisi bunu nasıl düzeltebileceğimi biliyor mu?


Görünüşe göre uygulamanızda bazı montajların farklı jilet sürümlerine bağımlılıkları var. Bağımlılıklarını görmek için derlemelerinizi ildasm veya .NET Reflector ile incelemeyi deneyin.
Paulo Morgado

Yanıtlar:


200

Kök Web.config dosyasında assemblyBinding'in "System.Web.WebPages.Razor" ve "System.Web.Mvc" derlemesi için uygun sürümü içerdiğinden emin olun. Hataya neden olan "System.Web.WebPages.Razor" derleme etiketimin yanı sıra gerçek varlığını kontrol edin. Bu yazım sırasında tam NuGet güncellemeleriyle derleme sürümlerimi sırasıyla 3.0 ve 5.0 olarak ayarladım. Kod aşağıdaki gibi görünmelidir. PublicKeyToken, sürümler arasında aynı kalacaktır. Şerefe!

<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>

2
Benim için çalıştı. Razor bilgilerini kaçırdım ve MVC yanlış sürüme işaret etti.
Hoakie

@Hoakie ile aynı durum - Razor'u 3.0.0'a ve MVC'yi 5.0.0'a güncelledi ve Razor'a bağımlıAssembly referansı yoktu ve MVC hala oldVersion = "1.0.0.0-4.0.0.0" newVersion = "4.0.0.0" dedi. Yukarıya Razor bağımlıAssembly XML'i eklendi ve 4.0.0.0'ı 5.0.0.0 ve Bob'un yer amcası olarak değiştirdi.
Scott Baker

2
Bu benim için çalıştı teşekkürler. Doğru bağlamalara sahip "System.Web.WebPages" var ama Razor anahtarını da ekleyene kadar çalışmıyordu. Ancak diğer projelerde bunu yapmak zorunda değildim, farkın ne olduğundan ve süper sınıf bağlamaların Razor için neden işleyemeyeceğinden emin değilim. Cevabı kimse biliyor mu?
Shane

Burada aynı. MVC girişine sahibim ama Razor olanı yok. Şimdi çalışıyor. Teşekkür ederim.
Yves Tkaczyk


40

Durumum mvc4'ten mvc5'e yükseltiliyordu.

Referanslarımın senkronize olmasını sağladım (yeni oluşturulmuş bir mvc5 uygulamasıyla), web.config dosyasını buna göre güncelledim ve hala çalışmadı. Sonunda web.config dosyamı ( INSIDE THE VIEWS dizini ) şuradan değiştirdiğimde çalıştı :

<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>

Buna:

<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>

UNUTMAYIN: iis'i (ekspres veya yerel) durdurun, çözümü temizleyin, oluşturun ve Çalıştırın.


bence bu yanıt aslında bir cevap olmalı. Mvc4'ten mvc5'e yükseltmek için güncelleme paketi yaklaşımı kullanıldığında derleme bağlama genellikle uygundur.
Roman

34

Ian'ın cevabının yeterli olmaması durumunda (ve montajlar doğru, ancak döküm yine de yanlış), muhtemelen <configSections>yeni montajı yansıtacak şekilde güncelleme yapmadınız . montaj kısmının System.Web.WebPages.Razorkitaplığın 3.0 sürümüne de başvurduğundan emin olun . Örneğin

<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>

( version=3.0.0Şimdi hepsinin referans olduğuna dikkat edin )


8
Eklemek isterim ki, bu ayarları kök Web.Config konsolunda bulamazsanız, Görünümler klasöründeki Web.Config konsolunu da kontrol edin.
gligoran

4
Evet, sorun benim için Görünümler klasörü web.config idi.
Matthew Nichols


1

Bu sorun, MVC 4 için geliştirme yaparken çok yaygındır ve ardından aniden daha yeni sürümde bulunan bir paketi yüklersiniz, böylece tüm uygulamayı bozar.

Bu tür bir sorunun tek çözümü, tüm uygulamanızı daha yenisine yükseltmek veya uygulamanızla uyumlu eski paketi yüklemektir.


1

Sorun:

[A] System.Web.WebPages.Razor.Configuration.HostSection, [B] System.Web.WebPages.Razor.Configuration.HostSection'a dönüştürülemez. A tipi, 'C: \ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System konumunda' Varsayılan 'bağlamında' System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = nötr, PublicKeyToken = 31bf3856ad364e35 'kaynağından kaynaklanır .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll'. B tipi, 'C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 konumunda' Varsayılan 'bağlamında' System.Web.WebPages.Razor, Version = 3.0.0.0, Culture = nötr, PublicKeyToken = 31bf3856ad364e35 'kaynaklıdır \ Geçici ASP.NET Dosyaları \ rbs.ceds.todomvcdemo \ 73d0b7c7 \ 46e3986d \ assembly \ dl3 \ 21020800 \ 101279fc_da94cf01 \ System.Web.WebPages.Razor.dll '.

Kimlik:

Hata, projenizin yapılandırma dosyası, yani web.config ile ilgilidir.

Burada Razor sürümünün 2.0.0.0 olarak ayarlandığını ve projenizin 2.0.0.0 sürümünün mevcut olmadığını göreceksiniz.

Çözüm:

Çok basit, sadece 2.0.0.0'dan 3.0.0.0'a olan sürümü değiştirin ve sihri yapacaktır.

type = "System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version = 3.0.0.0 type =" System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor , Sürüm = 3.0.0.0

İşleri karmaşık hale getireceği için yeniden yönlendirme koymanıza gerek yok.


0

Bir problem ve çözüm buldum.

1 Kodumu 4.0'a hedefledim ve sonra kodu yükledim ve çalıştı. Ondan önce de kodumu asp.net MVC 4'e güncellerim.

şimdi çalışıyor :)


3
Daha spesifik olabilir misin?
nwayve

0

Sisteminizdeki iki dll dosyasının konumunu açın, dosya konumunuzdaki dll'den birini diğerine kopyalayın
ve projeyi çalıştırmayı deneyin.


0

Referansları güncellemek zorunda kalmadan bunu düzeltmenin başka bir yolu da

  <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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.