Habe immer Fehler "Der ObjectContent 1 Typ konnte nicht serialisiert die Antwort Körper..."
Ich die Verwendung von Web-api zum abrufen von Daten aus der Datenbank. Ich habe nur 1 Tabelle "tblMessage" und wollen, um Daten aus dieser Tabelle.
Ich alles eingerichtet aber wenn ich dann auf die Webseite. die Fehler immer sagen
Den 'ObjectContent`1' type Fehler beim serialisieren der Antwort der Körper für den content-Typ " application/xml
Las ich einige Beiträge auf stackoverflow, dass sayid der Fehler konnte behoben werden, indem der browser für die Ausgabe von Daten im json-format. Nach dem Fehler wird
Den 'ObjectContent`1' type Fehler beim serialisieren der Antwort body für content-type 'application/json
Ich habe versucht, alle Lösungen der folgenden Beiträge, aber Sie nicht, lösen Sie das problem ( browser meldet den gleichen Fehler)
Web-API-Fehler: Die 'ObjectContent`1' type Fehler beim serialisieren der Antwort body für Inhaltstyp
Fehler beim serialisieren der Antwort body für Inhaltstyp
Web-API-Fehler: Die 'ObjectContent`1' type Fehler beim serialisieren der Antwort body für Inhaltstyp
Was genau dieser Fehler ist?
public interface IMessage
{
IQueryable<Message> GetAll();
}
public class Message
{
[Key]
public int i_StmID { get; set; }
public string vch_MsgString { get; set; }
}
public class EFDBContext : DbContext
{
public DbSet<Message> Message { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Message>().ToTable("tblMessage");
}
}
public class MessageRepository : IMessage
{
private EFDBContext context = new EFDBContext();
public IQueryable<Message> GetAll()
{
return context.tblMessage;
}
}
public class MessageController : ApiController
{
public IMessage repo = new MessageRepository();
public IEnumerable<Message> GetAllMsg()
{
return repo.GetAll();
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern
IEnumerable<Message
> zuList<Message>
zu
UPDATE:
Aber hüten Sie sich vor der Anreise
OutOfMemoryException
da diese Methode speichert alleMessage
Objekte im lokalen Speicher, so müssen Sie implementieren, einige Art von paging.IQueryable<T>
statt?Für diese Arten von Daten Abfragen, sollten Sie auf jeden Fall schaffen paging-Ergebnisse. Sie haben 2 Optionen für das paging im Web-API.
Die erste option, die Sie verwenden könnten, OData zurück IQueryable-Objekt von der action-Methode. So, dass Ihre Aktion unterstützt paging.
Die zweite option ist, einen Domänencontroller zu erstellen, die unterstützt paging. Ich lege ein Beispiel unten.
Den obigen code unterstützt paging und Sie sind in der Lage, Sammlung zählen, dass ist wieder von der client-Seite.
Ich hatte das gleiche Problem mit Chrome, nicht so viel mit dem IE. Um es zu fixieren verwendete ich die folgenden Zeilen in die Global.asax.cs, Application_Start () - Methode:
Ich hatte das gleiche problem und das ist die Lösung, die ich gefunden
Nach der Aktualisierung des Entity Data Modell müssen Sie
ProxyCreationEnabled
zufalse
im ModellConfiguration.ProxyCreationEnabled = false;
Mein Beispiel: