我该如何使用HttpRequest.GetBufferlessInputStream?

4

我在使用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()
1个回答

4

博客链接出现404错误(新链接:https://learn.microsoft.com/en-us/archive/blogs/praburaj/httpcontext-current-request-inputstream-property-throws-exception-this-method-or-property-is-not-supported-after-httprequest-getbufferlessinputstream-has-been-invoked-or-httpcontext-cur/),但是添加这个参数对我有用。 - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接