перейти с asp.net mvc 1.0 -> 2.0 - s # arp framework - PullRequest
1 голос
/ 13 июля 2010

У меня старое решение asp.net mvc (s # arp framework) с двумя проектами, одним для веба, а другим для контроллера. Я изменил dll на последние версии (2.0) для System.Web.MVC и Microsoft.Web.MVC. Я также настроил свой Web.Config:

<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Это (теоретически) все, что мне нужно сделать?

Решение строится нормально, но я получаю эту ошибку:

Попытка получить доступ к элементу как к типу, несовместимому с массивом. Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.ArrayTypeMismatchException: попытка доступа к элементу как к типу, несовместимому с массивом.

Ошибка источника:

Строка 32: Строка 33: ViewEngines.Engines.Clear (); Строка 34: ViewEngines.Engines.Add (new AreaViewEngine ()); Строка 35: Строка 36: ModelBinders.Binders.DefaultBinder = new SharpModelBinder ();

Это может быть связано не с переключателем mvc, а с фреймворком s # arp. Есть идеи? Спасибо.

С наилучшими пожеланиями,

Christian

1 Ответ

2 голосов
/ 13 июля 2010

Эта проблема связана с S # arp Architecture. Вам нужно получить версию S # arp для MVC2 здесь: http://github.com/codai/Sharp-Architecture/downloads. Первый элемент в списке - это то, что вы хотите, включая шаблон VS2010. (Обратите внимание на опечатку в описании, которое говорит ASP.NET 2, должно быть ASP.NET MVC 2)

Надеюсь, это поможет.

P.S. Если вам интересно узнать причину самого исключения, ознакомьтесь с этой краткой статьей: http://dotnetperls.com/arraytypemismatchexception. Я подозреваю (не глядя на S # arp 1 и источник MVC2), что SharpModelBinder (версия MVC1) теперь несовместим с реализацией MVC2 MVC DefaultBinder, и это не обнаруживается во время компиляции, поскольку SharpModelBinder наследуется от DefaultBinder, и компилятор считает, что все хорошо. Фактическая несовместимость обнаруживается только во время выполнения.

...