首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WebAPI 2,将输出流从"LimitMemoryStream“更改为

WebAPI 2,将输出流从"LimitMemoryStream“更改为
EN

Stack Overflow用户
提问于 2015-05-25 00:27:09
回答 1查看 822关注 0票数 2

因此,我试图将我的API内容流到客户机中,目的是尽快将数据发送给客户端。我将与另一个端点进行交谈,该端点在完成整个请求时可能比较慢。

我所面临的问题是,即使我使用StreamContent/PushStreamContent,WebAPI似乎会缓存我得到的任何东西,而忽略任何要刷新的调用。这真烦人。我可以在那里有一个客户端可以使用的数据,而且在另一端返回数据之前可能需要很长时间,所以我希望客户机至少能够得到它。

在我的测试中,我在编写流中的数据循环时添加了Task.Delay。根据webapi选择如何缓冲它,返回任何数据可能需要几分钟,即使数据在几百毫秒后被写入其输出流。

HttpResponseMessage调用HttpContent.SerializeToStreamAsyncLimitMemoryStream似乎是相关的,我认为这决定了如何缓冲输出。

在webapi中是否有任何方法来覆盖它?例如创建我自己的实现,它实际上响应于刷新?

EN

回答 1

Stack Overflow用户

发布于 2015-06-12 04:03:21

我找到了答案的核心这里。这篇文章讨论的是HttpClient/HttpRequestMessage,但我认为HttpResponseMessage也是如此。您需要在请求中设置内容长度,或者将TransferEncodingChunked头设置为true。如果两者都不做,那么WebAPI必须缓冲响应,以便它可以为您计算一个长度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30429769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档