2012-11-18 15 views
14

Nach dem Upgrade auf ASP.NET MVC 4, Anwendung bricht auf den Zugriff auf eine beliebige Webseite definiert innerhalb eines BereichsKonfigurationsfehler während Bereiche in ASP.NET MVC 4

Error screen shot

Beschreibung verwendet: Fehler während der aufgetreten Verarbeitung einer Konfigurationsdatei, die zur Bearbeitung dieser Anfrage benötigt wird. Bitte lesen Sie die spezifischen Fehlerdetails unten und ändern Sie Ihre Konfigurationsdatei entsprechend.

Parser-Fehlermeldung: Beim Erstellen des Konfigurationsabschnittshandlers für system.web.webPages.razor/host ist ein Fehler aufgetreten: Der angegebene Assemblyname oder die Codebasis war ungültig. (Ausnahme von HRESULT: 0x80131047)

<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=__WebPagesVersion__.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
+0

Vielleicht könnten Sie versuchen, einen neuen Bereich zu erstellen und die web.config mit der alten zu vergleichen, um zu sehen, welche Unterschiede zu berücksichtigen sind. – Despertar

+0

Wahrscheinlich haben Sie MVC 4 oben auf MVC 3 installiert, ohne es zuvor zu deinstallieren. – Tariqulazam

+0

MVC 3 & MVC 4 sollen zusammen existieren. Ist es nicht? Die Deinstallation von MVC 3 ist für mich keine Option. – Gopinath

Antwort

16

hinzugefügt dies als eine Antwort von Kommentar:

ändern Version = _ WebPagesVersion _ .0.0 zu Version = 2.0.0.0

Alternativ sehen Wenn Sie andere web.config-Dateien in Ihrem Projekt im Umlauf haben und sehen, welche Werte dort verwendet werden - verstehe ich, dass manchmal, wenn Sie mehrere web.config referenzieren unterschiedliche Version des Hosts Abschnitt kann es ziemlich verärgert werden. BTW gibt es keine Notwendigkeit, MVC 3 vor 4 zu deinstallieren - sie koexistieren glücklich!

+0

Ich musste in meinem Bereich web.config suchen und ersetzen, da jede Version undefiniert war (definiert als '\ _WebPagesVersion \ _' sowieso). Danke für deine Antwort. –

+0

Weitere Details zu diesem Fehler und die Fehlerbehebung auf meinem Blog hier http://volaresystems.com/Blog/post/2012/12/11/Fix-for-weird-errors-in-MVC4-when-adding-a-new -Area.aspx –

2

Am Ende muss man wie durch @bUKaneer

Ändern Version = WebPagesVersion .0.0 zu Version = 2.0.0.0

Wenn Sie fügen Sie einen neuen AREA vorgeschlagen tun, Sie würde Ihre Datei web.config für neuen Bereich haben, wie: -

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

Aktualisierung dieser Abschnitt mit: -

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

Dann finden/sucht

Host

Ihr Code aussehen würde -

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=__MvcVersion__.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 

Ändern Sie es an: -

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
schauen

Schließlich für

Sie Ihren Code finden können als

<pages 
     validateRequest="false" 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=__MvcVersion__.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=__MvcVersion__.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=__MvcVersion__.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <controls> 
     <add assembly="System.Web.Mvc, Version=__MvcVersion__.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
     </controls> 
    </pages> 

es Ersetzen durch: -

<pages 
     validateRequest="false" 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <controls> 
     <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
     </controls> 
    </pages> 

die Arbeitskopie von Web.Config würde wie folgt aussehen: -

<?xml version="1.0"?> 

<configuration> 
    <configSections> 
    <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> 
    </configSections> 

    <system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <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" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

    <appSettings> 
    <add key="webpages:Enabled" value="false" /> 
    </appSettings> 

    <system.web> 
    <httpHandlers> 
     <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
    </httpHandlers> 

    <!-- 
     Enabling request validation in view pages would cause validation to occur 
     after the input has already been processed by the controller. By default 
     MVC performs request validation before a controller processes the input. 
     To change this behavior apply the ValidateInputAttribute to a 
     controller or action. 
    --> 
    <pages 
     validateRequest="false" 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <controls> 
     <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
     </controls> 
    </pages> 
    </system.web> 

    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 

    <handlers> 
     <remove name="BlockViewHandler"/> 
     <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 
    </handlers> 
    </system.webServer> 
</configuration> 
+0

Du hast gerade meinen Tag gerettet, Bruder – ArgeKumandan

1

Dies ist, was für mich gearbeitet: Ich hatte vor kurzem laufen Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform C# 6 Unterstützung für Razor zu installieren, und ich denke, es ist diese Bibliotheken ebenfalls aktualisiert. Die einfache Lösung für mich war, die Version der Baugruppe in meinen Referenzen zu verifizieren (da ist ein Gedanke! Lol). In meinem Fall hatte die Baugruppe System.Web.WebPages.Razor eine "Version: 3.0.0.0" (klicken Sie mit der rechten Maustaste auf die Baugruppe und wählen Sie "Eigenschaften"). Ich glaube, welche Version auch immer dort erscheint, kopieren Sie sie.

Vorher:

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

Nach:

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

Hoffnung, dass jemand anderes hilft, die bis zu Ende, wo ich tat. ;)