C # Entity Framework 4 Die Common Language Runtime hat einen ungültigen Programmfehler festgestellt?

7

Wie behebt / repariert man einen "Common Language Runtime entdeckt ein ungültiges Programm" Fehler? Was genau bedeutet es überhaupt?

Ich habe eine C # MVC 2-Webanwendung, die auf zwei Websites bereitgestellt werden kann, die sich auf demselben IIS 7.5-Webserver (x64) befinden. Die eine ist die Live-Site (bereitgestellt mit der Release-Konfiguration), die zweite ist die Beta-Site (bereitgestellt mit einer neuen Beta-Konfiguration, die nur für dieses Projekt erstellt wurde).

Die beiden Websites sind:

%Vor%

Auf der Beta-Site wird bei der Auswahl einer seitenbasierten Liste von Bestellungen die Ausnahme "Erkanntes ungültiges Programm" ausgelöst. Der exakt gleiche Code funktioniert auf der Live-Site einwandfrei. Warum sollte es das tun?

Bearbeiten: Ich habe Visual Studio auf dem Server installiert und die tatsächliche Zeile, die das Problem verursacht hat, und den Stack-Trace gefunden:

%Vor%

Und das ist die Ausnahmemeldung mit Stack-Trace:

%Vor%

Diese neue Info zeigt genau, wo das Problem ist, aber nicht, was das Problem ist. Hoffentlich kann jemand, der den Entitätsrahmen sehr gut kennt, dies aufklären:

%Vor%

Ist die Zeile, in der der Fehler auftritt. Jetzt führte ich die Abfrage in SQL Management Studio und das Ergebnis war nicht null, und Total war auch nicht null. Warum hatte es ein Problem, set_Total () aufzurufen?

So definiert das POCO das Feld Total (generiert durch eine Vorlage T4):

%Vor%

Der Hauptunterschied zwischen den Live- und Beta-Sites ist die Build-Konfiguration. Bei beiden Konfigurationen ist jedoch jedes einzelne Projekt auf "Beliebige CPU" eingestellt.

Alle unsere Entwicklungsmaschinen und Server sind 64 Bit. Könnte es einen Unterschied zwischen der IIS-Konfiguration der Websites geben, die das verursacht?

Ich habe versucht, PEVerify auszuführen - aber es heißt nur "Alle Klassen und Methoden überprüft". Wie kann PEVerify bei dieser Art von Problem helfen?

BTW Ich kann sehen, dass es etwa 15 Fragen gibt, bei denen "Common Language Runtime ein ungültiges Programmproblem" im Titel entdeckt hat. Meine Frage ist kein Duplikat und hat mehrere einzigartige Merkmale, die sich von den anderen Fragen unterscheiden, die einen ähnlichen Titel haben (und nur einer dieser 15 bezieht sich auch auf Entity Framework - der Rest handelt von Reflection oder TFS)

    
JK. 13.07.2011, 02:25
quelle

4 Antworten

19

Ich bin heute auf dieses Problem gestoßen, als ich eine Webanwendung zur Implementierung von linq für Entität 4 in unserer QA-Umgebung bereitgestellt habe. Das Problem stellte sich als IIS-Einstellung auf dem Windows 2008 R2-Server heraus. Unter Erweiterte Einstellungen für den Anwendungspool wurde die Einstellung für 32-Bit-Anwendungen aktivieren auf False festgelegt. Ich setze es auf True und jetzt funktioniert meine Anwendung genauso wie auf dem Entwicklungsserver, der zufällig ein Windows 2003 Server war. Ich hoffe, das hilft.

    
Rick 19.07.2011, 17:34
quelle
2

Für mich ist das passiert, als ich meinem Entity-Modell eine View hinzugefügt habe. Standardmäßig legt der Designer alle Entitätsschlüsseleigenschaften der Spalten auf true fest. Wenn ich es für alle Dezimal / numerischen Spalten auf false setze, verschwindet der Fehler. Tas

    
Tas 25.01.2012 15:48
quelle
1

Haben Sie versucht, die Beta-Konfiguration auf einem anderen Rechner zu installieren? Sind Ihre Apppools gleich (d. H. Klassisch oder integriert, gleiche .net-Version)? Haben Sie versucht, die Lösung zu bereinigen und an einem neuen Speicherort neu zu verteilen? Haben Sie versucht, Beta Build zur Freigabe des Standorts bereitzustellen? (Achten Sie darauf, alle Dateien vor der Veröffentlichung zu löschen; ich bin neugierig, ob es eine übrig gebliebene dynamisch geladene Abhängigkeit gibt, die Probleme verursachen könnte)

UPDATE:

Ausgezeichnet mit mehr Informationen. In Zeile 3 definieren Sie die Variablenseite und verwenden gleichzeitig eine zuvor definierte Variable namens page. Wie kompiliert sich das? Versuchen Sie, diesen Code zu kommentieren oder zumindest ohne das Überspringen auszuprobieren.

HINWEIS: Ich denke, dass die Count () gefolgt von der Take () die Abfrage zweimal ausführen kann.

NOTE2: Ich habe nur die Entwicklung von EntityFramework v4 Database First verwendet, aber ich erinnere mich nicht daran, direkt mit dem ObjectSet zu programmieren. Normalerweise ist es Ihre Entitätsklasse (z. B. MyContext.Orders). Vielleicht ist etwas mit dem Programmieren gegen dieses Objekt und dem Setzen eines Dezimalwerts im Gange. Gibt es Eigenschaften für das Modell für diese Eigenschaft, die es nicht zum Standard machen?

    
Jason 13.07.2011 04:27
quelle
0

Es gibt einen großen Fehler !!, ich denke, es ist, während Spalte Eigenschaft im Entity-Framework,

Ich habe diesen ekligen Fehler msg konfrontiert, ich habe verglichen, Daten aus zwei separaten Tabellen (gleiche Tabellen), eins mit einer Ganzzahl Spalten-ID und das andere mit dezimalen Spalte ID,

für die Tabelle mit der Integer-Spalte, kein Problem, der gleiche Code lief perfekt, Für die Tabelle mit einer Dezimalspalte erscheint diese Fehlermeldung Ich habe Kontrollen auf SQL-Server-iis und der Umgebung gemacht und ich wollte sogar den PC formatieren, es ist sehr seltsam und der Fehler msg ist nicht klar.

Ich hoffe, dieser Ansatz hilft jedem, der sich in Zukunft einem solchen Fehler gegenübersieht.

    
Rabih harb 28.10.2011 18:30
quelle