- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
使用 Web API 2.2,假设我想从 HttpContent
中读取两次,每次都是不同的类型。
await httpContent.LoadIntoBufferAsync(); //necessary to buffer content for multiple reads
var X = await httpContent.ReadAsAsync<T>(); //read as first type
var Y = await httpContent.ReadAsAsync<Dictionary<string, object>>(); //read as second type
当我运行上面的代码时,X
是 T
的非空实例,而 Y
是空的。如果我切换顺序,Y
将是一个非空字典,而 X
将为空。换句话说,对 ReadAsAsync
的第二次和后续调用将始终返回 null,除非它们是使用相同的泛型类型参数调用的。独立地,对 ReadAsAsync
的调用都按预期工作(即使在不必要地调用 LoadIntoBufferAsync
时)。
这对我来说是出乎意料的 - 似乎我应该能够根据需要多次读取不同类型的缓冲内容。如果我添加另一行:
var Z = await httpContent.ReadAsString();
结果是 Z
将是一个非空字符串,无论分配给 X、Y、Z
的顺序如何。
那么这是怎么发生的,为什么我不能使用具有多种类型的 ReadAsAsync
从 HttpContent
中读取?
最佳答案
@Peter 是正确的。如果您想一次又一次地阅读,您可能希望以流的形式阅读并在每次阅读流时都从头开始。但是如果你现在想做什么但要让第二次读取工作,你可以在第一次读取之后寻找到流的开头,就像这样。
await httpContent.LoadIntoBufferAsync();
var X = await httpContent.ReadAsAsync<T>();
Stream stream = await httpContent.ReadAsStreamAsync();
stream.Seek(0, SeekOrigin.Begin);
var Y = await httpContent.ReadAsAsync<Dictionary<string, object>>();
关于c# - 多次调用 HttpContent ReadAsAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26942514/
我有一个通过 HttpSelfHostServer (ASP.Net WebApi Beta) 运行的小型 REST 服务,但在反序列化一些发布到服务器的数据时遇到了一些问题。方法签名如下: publ
在同一个类中对泛型方法进行方法调用时,出现以下异常: System.MissingMethodException:找不到方法:'System.Threading.Tasks.Task`1 System
使用 Web API 2.2,假设我想从 HttpContent 中读取两次,每次都是不同的类型。 await httpContent.LoadIntoBufferAsync(); //necessa
我在网络上看到大量使用新 HttpClient 的示例对象(作为新 Web API 的一部分)应该有 HttpContent.ReadAsAsync方法。然而,MSDN没有提到这个方法,Intelli
我在 MVC 4 应用程序中使用 ASP.Net Web API 来执行各种操作。问题是我的 API 方法返回动态类型,并且在 View 端我使用方法 ReadAsAsync().Result。现在我
我有课 public class C { public int Id { get; set; } public SqlXml Range { get; set; } // System
我正在使用 Microsoft.AspNet.WebApi.Client在我的 ASP.MVC 5 项目中使用休息服务。我正在关注 this使用 HttpClient 的教程。代码未编译,因为 Rea
这适用于所有属性: string resultAsString = await httpResponseMessage.Content.ReadAsStringAsync(); return awai
我正在尝试通过 tutorial explaining how to access a WebAPI service在 VS2013 (.net 4.5.1) 中,我得到以下行的编译错误: Produ
我正在集成一个从几乎端点返回此模型的 API { meta: { ... }, data: { ... } } 但对于某些调用,数据是同类对象的数组 { meta: { ... },
我有以下代码尝试从 Web API 服务获取 Appication 对象。我得到以下异常: InnerException = {"Could not create an instance of typ
是否可以创建一个实现 HttpContent.ReadAsAsync 的 stub ?在Microsoft Fakes的帮助下(在 Visual Studio 2012 中)?如果是,怎么办? 最佳答
假设我有如下从客户端发送的 json 负载 {"Number": 2, "number": 4} 在服务器端,我有这个模型类。 public class Arg { public int Nu
我正在开发一个 winform 应用程序,并且正在对 GoogleMaps API 进行 API 调用。但由于某种原因,我无法得到回应。或者实际上,我确实收到了回复,但无法对其执行任何操作。 我的代码
应该做什么HttpContentExtensions.ReadAsAsync和 HttpContent.ReadAsStringAsync用来做什么? 他们似乎在做类似的事情,但工作方式却很奇怪。下面
因此,我正在启动一个新的 .Net 4.0 项目,并将使用公共(public) API 进行一些工作。我计划使用 Microsoft HttpClient 类,所以我安装了最新稳定版本的 Micros
我正在使用 Microsoft ASP.NET Web API 客户端库(版本 4.0.30506,因为我必须在 .NET Framework 4.0 上运行)以与 .NET Web API 交互。我
我正在尝试通过 Web API 客户端库使用 Web 服务。我的问题是,当提交函数使用 POST 方法时,ReadAsAsync 似乎不想完全反序列化返回的对象。 如果我得到字符串形式的响应并手动解除
我第一次涉足 ASP.NET Web API,遇到了一个让我非常沮丧的问题。 我正在调用的 RESTful 服务返回如下数据: foo
我正在调用 WebAPI,它通过 JSON 从数据库返回一些内容。内容在 JSON 中可见(使用 Fiddler 查看),但是当我尝试将响应数据放回类中时,类中的所有值均为 null。 这曾经有效,但
我是一名优秀的程序员,十分优秀!