2009-11-24 2 views
1

J'ai récemment téléchargé mon application ASP.NET MVC 2 Preview 2/.NET 4 (Construit à l'aide de VS 2010 Beta 2) sur les sites Web bêta de MaximumASP.com et lorsque j'essaie de l'exécuter, j'obtiens l'erreur suivante:Appel entre ambigieux RenderActions

CS0121: The call is ambiguous between the following methods or properties: 'System.Web.Mvc.Html.ChildActionExtensions.RenderAction(System.Web.Mvc.HtmlHelper, string, string)' and 'Microsoft.Web.Mvc.ViewExtensions.RenderAction(System.Web.Mvc.HtmlHelper, string, string)'

Cette erreur n'apparaît pas sur mon ordinateur de développement (Windows 7, VS 2010). Une idée de ce qui pourrait en être la cause?


MISE À JOUR

Je me suis assuré que les fichiers .dll je téléversé avec mon projet sont ceux qui fonctionnent très bien avec Visual Studio 2010 Beta 2, mais je reçois toujours la même erreur quand je télécharger à mon hôte.

Mon hôte utilise la version la plus récente d'ASP.NET MVC 2 (version bêta), mais je référence l'ancien fichier .dll Preview dans mon fichier web.config et je les télécharge dans le dossier BIN, mais toujours rien.

-

Répondre

2

MVC est PAS pris en charge dans VS2010 ... Alors est-ce Preview 2 (Bien que RenderAction fait partie de MVC2 Beta?)?

http://haacked.com/archive/2009/11/17/asp.net-mvc-2-beta-released.aspx

Unfortunately, because Visual Studio 2010 Beta 2 and ASP.NET MVC 2 Beta share components which are currently not in sync, running ASP.NET MVC 2 Beta on VS10 Beta 2 is not supported.

+0

Mon hôte exécute donc ASP.NET MVC 2 Beta, alors que mon application est construite avec VS 2010 MVC (qui est une version antérieure à MVC 2 Beta)? – Omar

+0

Potentiellement, pouvez-vous savoir ce qu'ils courent? – LiamB

0

Pouvez-vous nous donner la sortie de typeof (contrôleur) .Assembly.GlobalAssemblyCache, à la fois sur votre machine dev et sur votre hôte? Si votre code de contrôleur est capable de s'exécuter, vous pouvez juste Response.Write(), puis Response.End(). Votre vue ne s'affichera pas, donc, espérons-le, vous pourrez éviter cette erreur.

Edit:

Depuis votre hebergeur a GACed le binaire MVC, vous devez compiler votre site contre la même version du binaire que votre hoster est à l'aide; bin-deployment ne fonctionnera pas. Si votre hébergeur a installé MVC 2 Beta, vous devez compiler votre site avec le binaire MVC 2 bêta. Malheureusement, cela signifie que vous devrez compiler votre site avec VS2008 + MVC 2 Beta, car VS2010 Beta 2 inclut MVC 2 Preview 2, qui est une version antérieure à celle déployée par votre hébergeur.

Comme une solution de contournement complètement non prise en charge qui pourrait faire fonctionner MVC 2 Bêta sur VS2010 Beta 2, vérifiez this comment sur le blog de Phil. Notez que je veux dire complètement non pris en charge - il pourrait affecter d'autres parties de VS, empêcher la désinstallation et nécessitent reformater la machine, la cause de votre machine pour transformer radioactifs, etc.

Sinon, smack votre hebergeur pour les binaires bêta GAC-déploiement et les amener à l'ONU-GAC. :) Ensuite, vous pouvez bin-déployer le binaire particulier que vous compilez.

+0

Ils retournent tous deux vrai. – Omar

+0

Je vais contacter mon hôte et voir ce qu'ils ont à dire. Je suis sur un plan partagé, donc je ne pense pas qu'ils vont le faire juste pour moi. Mais on verra. – Omar

+0

J'ai dit à mon hôte, ils ont dit que ça leur prendrait 24-72 heures pour comprendre le problème. Je suis allé de l'avant et d'utiliser Microsoft.Web.Mvc.ViewExtensions.RenderAction (Html ​​partout où j'ai utilisé un RenderAction comme une solution de contournement jusqu'à ce qu'ils reviennent à moi. – Omar

0

Deux choses auxquelles je peux penser; Tout d'abord, vous pouvez vous assurer de ne pas importer l'un des espaces de noms sur toutes les pages (par exemple, supprimer Microsoft.Web.Mvc.ViewExtensions de toute instruction <% Import%> et de la zone system.web/pages/namespaces du web.config Cela signifie malheureusement que vous ne pouvez pas facilement référencer les méthodes d'extension dans cet assemblage.

An alternative option fournie sur les forums MSDN serait d'écrire une méthode d'extension de votre choix qui enveloppe juste celui que vous voulez appeler et a un nom complètement différent (par exemple, BaddieRenderAction()).

Aucune de ces options n'est très bien, mais avec la deuxième option au moins, vous pouvez démarrer facilement et ensuite à l'avenir quand MVC 2 est libéré et vos assemblys GACed de fournisseurs ne posent pas de problème, vous pouvez faire a Rechercher et remplacer pour "BaddieRenderAction" -> "RenderAction" et tout est corrigé.

0

Plutôt que envelopper le Render d'action, il suffit d'appeler explicitement la méthode d'extension comme suit: Microsoft.Web.Mvc.ViewExtensions.RenderAction (Html, ...)

+0

pas clair ou pas la réponse exacte ///! – Chella

3

Dans mon cas, la suppression de la référence à la ancienne bibliothèque Microsoft.Web.Mvc de ASP.NET MVC 1 a résolu le problème.

Questions connexes