我在使用WCF服务接收Post数据时出现了问题。如果我尝试使用InputStream,就会抛出异常:“此方法或属性在调用HttpRequest.GetBufferlessInputStream后不受支持”。
我相信我知道为什么会出现这个错误,但我还没有成功地解决它。针对这个问题已经有一个现有的帖子,指出了一些变通方法-Visual Studio 2012安装破坏了我的2010 WCF项目
我正在使用 .Net 4.5,因此我遵循了帖子中建议的解决方案,但没有成功。当我尝试访问InputStream时,仍然会出错。
如果我知道如何正确处理无缓冲输入流,那对我来说就不是问题了。当我查看流的长度时,它似乎包含我发送的数据,但是当我使用StreamReader读取它时,它总是返回空值。如果我只是调用Stream.Read(),它似乎总是为空。
我的理解是,由于可扩展性原因,缓冲输入被缓冲输入替换,但它似乎有些不直观。有人知道如何正确处理无缓冲输入吗?能提供一个例子吗?
我已经尝试了:
var result = string.Empty;
Stream stream = context.Request.GetBufferlessInputStream();
byte[] b = new byte[100000];
while ((n = stream.Read(b, 0, b.Length)) > 0)
{
result += n;
}
并且
var stream = context.Request.GetBufferlessInputStream();
var streamContent = new StreamReader(stream).ReadToEnd()