80 votes

InvalidCastException est levé après l’installation de ASP.NET MVC 4 Beta

Je reçois l’exception suivante après avoir installé ASP.NET MVC 4 bêta sur une machine avec ASP.NET MVC 3.

StackTrace :

Cela me bloque complètement, et tandis que je tiens à garder la version bêta, je pourrais avoir besoin de l’enlever complètement afin de se débarrasser de l’exception.

101voto

Rolice Points 2213

J'ai eu le même problème, mais lors de la migration ASP.NET MVC 3 ASP.NET MVC 4. De cette façon, je suis sur ce sujet. J'ai trouvé une solution à ce problème, mais sa source est différente, il n'est pas d' WebPages version.

J'ai suivi le guide officiel (pour ainsi dire) mise à niveau d'une ASP.NET MVC 3 du Projet de ASP.NET MVC 4.

Pour résoudre le problème, vous devez ajouter dans le Web.Config (probablement autour précédemment ajoutés):

<runtime><!-- Should be there by default, near end -->
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"><!-- Should be there by default -->
    <dependentAssembly>..</dependentAssembly><!-- Should be there by default -->
        ... some other dependecy redirects ...

    <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor"
            publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
    </dependentAssembly>

        ... some other dependency redirects ...
    </assemblyBinding>
</runtime>

Également dans la note n'est pas mentionné pour changer la Référence de Système.Web.Les aides de 1.0.0.0 à 2.0.0.0 (supprimer et ajouter le nouveau).

34voto

Steve G Points 678

Un de plus, un peu tard, solution ... j'ai rencontré ce même problème. A tous les correctifs répertoriés ici (Merci à Tous!!!) mais ne pouvait pas obtenir au-delà de l'erreur. Enfin, en désespoir de cause, j'ai trouvé un site web.fichier de configuration dans le répertoire de Vues. Dans ce fichier, j'ai trouvé plusieurs références à la version de Système.Web.Mvc et abordait tous de la "4.0.0.0". Plus important encore, j'ai trouvé les lignes suivantes et mis à jour les numéros de version de système".web.les pages web.Rasoir" à partir de "1.0.0.0" à "2.0.0.0" et soudain, tout fonctionnait de nouveau. J'espère que cela va aider quelqu'un d'autre.

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

Steve G.

31voto

marcind Points 38002

Essayez d’ajouter le texte suivant dans votre fichier web.config :

La question pourrait être due à plusieurs fournisseurs de générations étant enregistrées et la plus récente gagnante.

5voto

laorient Points 41

J'ai trouvé une autre façon d'obtenir que cela fonctionne, le long de la ligne à un Taïwanais blog sur la mise à niveau de MVC 2 à MVC 3: http://blog.kkbruce.net/2011_04_01_archive.html (Vous pouvez en fait utiliser Microsoft Traduire dans IE10 pour voir la version anglaise et c'est une assez bonne traduction...)

Le truc est de trouver toutes les versions qui se rapportent à MVC3 (comme un Rasoir, Mvc, Helper assemblées, vous saurez ce qu'ils sont, si vous allez à vos références et découvrez toutes les nouvelles versions de votre assembly référencé) et de les modifier à partir de 1.0.0.0 à 2.0.0.0 et de 3.0.0.0 à 4.0.0.0 (depuis les clés publiques sont les mêmes). Vous pouvez également essayer de supprimer toutes les versions que par le blog.

Une autre chose importante est que ces paramètres sont tous sur le Web.Les Configs. Ainsi, non seulement en vertu de la racine, mais aussi en vertu de la Vue, de la Région/{Zone}/Vue, etc.

Je sens que cette solution peut vous permettre de mettre à niveau vers la MVC4 complètement au lieu d'avoir un modèle hybride, qui ne fonctionne pas pour moi de toute façon.

4voto

James Lawruk Points 8106
<ol> <li>Dans Visual Studio, créez un nouveau « jetable » Application ASP.NET MVC 4 dans un dossier distinct quelque part.</li> <li>Remplacez le fichier web.config dans votre dossier vues par le fichier web.config vues fraîchement créé la nouvelle application jetable.</li> <p>Vous remarquerez :</p><p><code></code>passe de <code></code> à <code></code> <code></code> passe de <code></code> à <code></code></p></ol>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X