Frage

Ich habe eine ältere asp.net-MVC-Lösung (s#arp-Framework) mit zwei Projekten, eines für das Web und eines für den Controller.Ich habe die DLL auf die neuesten Versionen (2.0) für System.Web.MVC und Microsoft.Web.MVC geändert.Ich habe auch meine Web.Config angepasst:

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

Ist das (theoretisch) alles, was ich tun muss?

Die Lösung lässt sich gut erstellen, aber ich erhalte die folgende Fehlermeldung:

Es wurde versucht, auf ein Element als Typ zuzugreifen, der mit dem Array nicht kompatibel ist.Beschreibung:Während der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten.Weitere Informationen zum Fehler und seinem Ursprung im Code finden Sie im Stack-Trace.

Ausnahmedetails:System.ArrayTypeMismatchException:Es wurde versucht, auf ein Element als Typ zuzugreifen, der mit dem Array nicht kompatibel ist.

Quellfehler:

Zeile 32:Zeile 33:ViewEngines.Engines.Clear();Zeile 34:ViewEngines.Engines.Add(new AreaViewEngine());Zeile 35:Zeile 36:ModelBinders.Binders.DefaultBinder = new SharpModelBinder();

Dies hängt möglicherweise nicht mit dem MVC-Switch, sondern mit dem S#ARP-Framework zusammen.Irgendwelche Ideen?Danke.

Beste Wünsche,

Christian

War es hilfreich?

Lösung

Dieses Problem hängt mit der S#arp-Architektur zusammen.Sie müssen die MVC2-Version von S#arp hier herunterladen: http://github.com/codai/Sharp-Architecture/downloads.Das erste Element in der Liste ist das, was Sie benötigen, einschließlich der VS2010-Vorlage.(Beachten Sie den Tippfehler in der Beschreibung, der besagt, dass ASP.NET 2 ASP.NET MVC 2 sein sollte.)

Hoffentlich hilft das.

P.S.Wenn Sie sich für die Ursache der Ausnahme selbst interessieren, lesen Sie diesen kurzen Artikel: http://dotnetperls.com/arraytypemismatchException.Ich vermute (ohne einen Blick auf die S#arp 1- und MVC2-Quelle zu werfen), dass die SharpModelBinder (die MVC1-Version) ist jetzt nicht mit der MVC2-Implementierung der MVC kompatibel DefaultBinder, und dies wird zur Kompilierungszeit nicht abgefangen, weil SharpModelBinder erbt von DefaultBinder und der Compiler denkt, alles sei in Ordnung.Erst zur Laufzeit wird die tatsächliche Inkompatibilität erkannt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top