我正在使用StreamWriter通过WebRequest POST传递大量数据(30mb +)。它失败并显示错误流不支持并发IO读取或写入操作。与错误消息相反,我没有执行并发操作 - 应用程序是单线程的,StreamWriter逻辑非常简单
string data = "......."; // 30mb+ of text
var webRequest = WebRequest.Create(someUrl);
webRequest.Method = "POST";
webRequest.ContentLength = data.Length;
using (var writer = new StreamWriter(webRequest.GetRequestStream()))
writer.Write(data);
我怀疑大量数据是罪魁祸首。我看到Team Foundation System用户在上传大文件时遇到此错误的引用([1],[2]),但我还没有看到大型数据被讨论为TFS讨论。
我是否真的遇到StreamWriter的限制?是否有更有效的方式来传输这些数据?
答案 0 :(得分:1)
根问题是我的POST请求太大,以至于我超出了目标服务器的maxAllowedContentLength设置。解决方法是增加此设置的值。
我不确定为什么会出现“并发IO”错误,但只有在我设置webRequest.ContentLength
时才会发生错误。当我评论出该行时,我能够看到WebRequest从服务器收到404。这最终让我发现了maxAllowedContentLength的问题。