Immer Fehler "Der Objekttyp ObjectContent 1 konnte den Antworttext nicht serialisieren ..."

8

Ich verwende Web API, um Daten aus der Datenbank abzurufen. Ich habe nur 1 Tabelle "tblMessage" und möchte Daten von dieser Tabelle erhalten.

Ich habe alles eingerichtet, aber dann, wenn ich die Website leite. Der Fehler sagt immer

  

Der Typ 'ObjectContent'1 konnte den Antworttext für den Inhaltstyp' application / xml 'nicht serialisieren

Ich habe einige Posts auf stackoverflow gelesen, die sagen, dass der Fehler behoben werden konnte, indem der Browser angewiesen wurde, Daten im json-Format auszugeben. Danach wird der Fehler

  

Der Typ 'ObjectContent'1 konnte den Antworttext für den Inhaltstyp' application / json

nicht serialisieren

Ich habe alle Lösungen aus den folgenden Posts versucht, aber sie beheben das Problem nicht (Browser meldet den gleichen Fehler)

Web-API-Fehler: Der Typ 'ObjectContent'1 konnte den Antworttext für den Inhaltstyp nicht serialisieren

Fehler beim Serialisieren des Antworttextkörpers für den Inhaltstyp

Web-API-Fehler: Die Der Typ 'ObjectContent'1' konnte den Antworttext für den Inhaltstyp nicht serialisieren

Was genau ist dieser Fehler?

%Vor%     
kaboom 08.08.2013, 19:17
quelle

4 Antworten

5

Ändern IEnumerable<Message & gt; zu List<Message>

%Vor%

bis

%Vor%

UPDATE: Aber hüte dich davor, OutOfMemoryException zu erhalten, weil diese Methode alle Message -Objekte im lokalen Speicher speichert, so dass du eine Art Paging implementieren musst.

    
Nikola Mitev 08.08.2013, 19:24
quelle
2

Für diese Art der Datenabfrage sollten Sie auf jeden Fall Paging für Ergebnisse erstellen. Sie haben zwei Optionen zum Paging in der Web-API.

Die erste Option, mit der Sie OData verwenden können, um ein IQueryable-Objekt von Ihrer Aktionsmethode zurückzugeben. Damit unterstützt Ihre Aktion Paging.

Die zweite Option besteht darin, einen Controller zu erstellen, der Paging unterstützt. Ich stelle ein Beispiel unten.

%Vor%

Der obige Code unterstützt Paging und Sie können die Anzahl der Aufrufe festlegen, die von der Clientseite zurückgegeben werden.

    
kkocabiyik 17.08.2013 06:23
quelle
2

Ich hatte das gleiche Problem mit Chrome, nicht so sehr mit IE. Um es zu beheben, habe ich die folgenden Zeilen bei der Global.asax.cs, Application_Start () -Methode verwendet:

%Vor%     
freethinker6 11.03.2015 21:37
quelle
1

Ich hatte das gleiche Problem und das ist die Lösung, die ich gefunden habe

Nach dem Aktualisieren des Entitätsdatenmodells müssen Sie ProxyCreationEnabled auf false in Ihrem Modell setzen

Configuration.ProxyCreationEnabled = false;

Mein Beispiel:

%Vor%     
Rijad Husić 30.11.2015 21:51
quelle