如何解决C#通过HttpClient发送流“正在播放”生成的流
我正在尝试使用HttpClient发送数据流。 我的流不是FileStream,也不是任何其他“简单”类型的流。 我有一些类似于生产者-消费者流(使用内部BlockingStream)的东西。 所以我允许从生产者流中读取数据,而它是在后台生产数据的。 然后我尝试使用以下方式发送它:
using (var streamContent = new StreamContent(producerStream,10485760))
{
using (var response = await m_httpClient.PutAsync(uri,streamContent))
response.EnsureSuccessStatusCode();
}
问题是,该请求首先生成整个数据,然后通过http发送。
我的生产者流不允许寻求更大的检查长度。因此Http Request不能设置Content-Length,因为在生成开始时未知。
我还尝试用ReedSeekableStream(缓冲区)包装我的流,因此它至少允许Seek,但不知道真正的内容长度。问题是:如果我设置的Stream Length太小,则HttpClient太早停止写数据,如果我设置了更大的Stream Length,则HttpClient在发送数据后会引发异常。 Exception表示无法在结束所有数据发送之前关闭内部流。
我想在后台创建流时通过HTTP发送我的流(例如,在写入文件时很容易)。也许您知道任何解决方案?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。