c# - HttpContent.ReadAsAsync 反序列化问题

标签 c# asp.net-web-api deserialization

我有一个通过 HttpSelfHostServer (ASP.Net WebApi Beta) 运行的小型 REST 服务,但在反序列化发布到服务器的某些数据时遇到一些问题。方法签名如下:

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 托管时我还没有尝试过此操作。

干杯

最佳答案

在与 ASP.Net 网站上的 MS 人员交谈后,发现这是 WebApi 当前测试版中的一个错误,更多信息 here 。此问题应在下一版本的 WebApi 中得到修复。

关于c# - HttpContent.ReadAsAsync 反序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9968870/

相关文章:

java - 从 JSON 反序列化时,时间会添加到日期中

c# - WebAPI 类的外键关系

c# - 字符串授权的内容 header 删除失败

java - 有没有办法在反序列化后调用承包商之后的方法

c# - C# 4.0 以后应该有哪些特性来鼓励从 Java 转换?

c# - ASP.Net MVC 4 WebAPI 自定义路由

java - 获取反序列化器中的属性类型( jackson )

c# - 通过 .NET 使用 PL/SQL 集合类型参数调用 Oracle 过程

c# - Package.Open()异常: Access to path is denied

c# - 无法在 Linq to Entity 查询中构造实体或复杂类型