2012-04-01 130 views
2

我有一個小的REST服務,我通過HttpSelfHostServer(ASP.Net WebApi Beta)運行,但是我有一些問題反序列化一些數據發佈到服務器。方法簽名如下:HttpContent.ReadAsAsync反序列化問題

public HttpResponseMessage PostServers(ServerType serverType) 

的方法,是被稱爲正常,但是使用以下代碼中的數據的反序列化:

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

則拋出IOException與消息「不能訪問封閉流「。試圖通過

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

反序列化代碼,但是,我可以得到,如果我使用的方法上班以下時,會發生同樣的錯誤:

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); 
    ... 
} 

我做財產以後做錯了前兩種情況,或者這是WebApi中的錯誤?

注意:當通過IIS託管時,我還沒有嘗試過。

乾杯

回答

2

跟一個MS人ASP.Net網站其在的WebAPI的目前的測試版中的錯誤,更多信息here上後。這個問題應該在WebApi的下一個版本中得到解決。