2009-11-24 4 views
1

Недавно я загрузил приложение ASP.NET MVC 2 Preview 2/.NET 4 (построенное с использованием VS 2010 Beta 2) на бета-сайты MaximumASP.com, и когда я пытаюсь запустить его, я получаю следующую ошибку:Звонок между двусмысленными 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)'

Эта ошибка не отображается на моей машине разработчика (Windows 7, VS 2010). Любая идея, что может быть причиной этого?


UPDATE

Я убедился, что я библиотек .dll, загруженные с моим проектом, являются те, которые работают хорошо с Visual Studio 2010 Beta 2, но я все еще получаю ту же ошибку, когда я загружаю это моему хозяину.

Мой хост использует новейшую версию ASP.NET MVC 2 (бета-версия), но я ссылаюсь на старые файлы .dll в моем web.config и загружаю их в папку BIN, но все равно ничего.

-

ответ

2

MVC является НЕ поддерживается в VS2010 ... Так это изображение 2 (Хотя RenderAction является частью 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

Итак, мой хост работает с бета-версией ASP.NET MVC 2, а мое приложение построено с использованием VS 2010 MVC (которая старше версии MVC 2 Beta)? – Omar

+0

Потенциально, можете ли вы узнать, что они работают? – LiamB

0

Можете ли вы дать нам выход TYPEOF (контроллер) .Assembly.GlobalAssemblyCache, как на вашем Dev машине и на хосте? Если ваш код контроллера можно запустить, вы можете просто выполнить Response.Write(), а затем Response.End(). Это приведет к тому, что ваше представление не будет отображаться, поэтому, надеюсь, вы сможете избежать этой ошибки.

Edit:

Поскольку ваш хостер имеет GACed двоичного кода MVC, вы должны компилировать ваш сайт с одной и той же версией двоичного, что ваш хостер Пользуется; bin-deployment не будет работать. Если ваш хостер установил бета-версию MVC 2, вам необходимо скомпилировать ваш сайт с бинарником MVC 2 Beta. К сожалению, это означает, что вам нужно будет скомпилировать ваш сайт с помощью VS2008 + MVC 2 Beta, так как VS2010 Beta 2 включает MVC 2 Preview 2, который является более ранней версией, чем то, что ваш хостер развернул.

В качестве полностью неподдерживаемого обходного пути, которое может сделать бета-версию MVC 2 на VS2010 Beta 2, отметьте this comment в блоге Фила. Обратите внимание, что я имею в виду полностью неподдерживаемый - это может повлиять на другие части ВС, предотвращения удаления и требуют переформатирования машину, привести к вашей машине, чтобы включить радиоактивные и т.д.

В качестве альтернативы, пороть ваш хостер для GAC-развертывания бета-файлы и передайте их на не-GAC. :) Затем вы можете bin-развернуть конкретный двоичный файл, который вы компилируете.

+0

Оба они верны. – Omar

+0

Я свяжусь с хозяином и посмотрю, что они скажут. У меня общий план, поэтому я не думаю, что они сделают это только для меня. Но посмотрим. – Omar

+0

Я сказал хозяину, они сказали, что им понадобится 24-72 часа, чтобы выяснить проблему. Я пошел вперед и использую Microsoft.Web.Mvc.ViewExtensions.RenderAction (Html ​​везде, где я использовал RenderAction как обходной путь, пока они не вернутся ко мне. – Omar

0

Две вещи, о которых я могу думать; Во-первых, вы можете не импортировать одно из пространств имен на всех страницах (например, удалить Microsoft.Web.Mvc.ViewExtensions из любых операторов <% Import%> и из области system.web/pages/namespaces web.config. К сожалению, вы не можете легко ссылаться на методы расширения в этой сборке.

An alternative Опции, предоставленные на форумах MSDN, состоят в том, чтобы написать собственный собственный метод расширения, который просто обертывает тот, который вы хотите вызвать, и имеет совершенно другое имя (например, BaddieRenderAction()).

Ни один из вариантов не подходит, но со вторым вариантом, по крайней мере, вы можете легко запускать и запускать, а затем в будущем, когда MVC 2 будет выпущен, а ваши сборки GACed поставщиков не вызовут проблемы, вы можете сделать поиск и замена для «BaddieRenderAction» -> «RenderAction», и все это исправлено.

0

Вместо того, чтобы обернуть Рендер Action, просто явно вызвать метод расширения следующим образом: Microsoft.Web.Mvc.ViewExtensions.RenderAction (Html, ...)

+0

непонятный или неточный ответ ///! – Chella

3

В моем случае, удаление ссылки на old Microsoft.Web.Mvc библиотека из ASP.NET MVC 1 решила проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^