2012-04-01 4 views
2

Ich habe einen kleinen REST-Dienst, den ich über den HttpSelfHostServer (ASP.Net WebApi Beta) ausführe, aber habe einige Probleme beim Deserialisieren einiger Daten, die auf dem Server veröffentlicht werden. Die Methodensignatur ist wie folgt:HttpContent.ReadAsAsync Deserialisierungsproblem

public HttpResponseMessage PostServers(ServerType serverType) 

Verfahren fein genannt werden, jedoch auf der Deserialisierung der Daten mit dem folgenden Code:

var servers = Request.Content.ReadAsAsync<List<ServerZoneInformation>>().Result; 
... 

eine IOException mit der Meldung ausgelöst wird, „Kann keinen Zugriff geschlossener Stream. ". Der gleiche Fehler tritt auf, wenn der Code über

XmlSerializer serializer = new XmlSerializer(typeof(List<ServerZoneInformation>)); 
var servers = (List<ServerZoneInformation>)serializer.Deserialize(Request.Content.ReadAsStreamAsync().Result); 
... 

zu deserialisieren versuchen Jedoch habe ich die Methode bekommen zu arbeiten, wenn ich folgendes verwenden:

XmlSerializer serializer = new XmlSerializer(typeof(List<ServerZoneInformation>)); 
string data = Request.Content.ReadAsStringAsync().Result; 
using (MemoryStream ms = new MemoryStream(UTF8Encoding.UTF8.GetBytes(data))) 
{ 
    var servers = (List<ServerZoneInformation>)serializer.Deserialize(ms); 
    ... 
} 

Bin ich somthing falsch in den ersten beiden Fällen zu tun, oder ist das ein Fehler im WebApi?

Hinweis: Ich habe dies noch nicht beim Hosting über IIS versucht.

Prost

Ben

Antwort

2

here zu einer MS Person auf der ASP.Net Website seines um einen Fehler in der aktuellen Beta des WebAPI, weitere Infos Nach dem Gespräch. Dieses Problem sollte in der nächsten Version von WebApi behoben werden.