问题描述
我正在尝试使用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 (将#修改为@)