Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该如何使用HttpRequest.GetBufferlessInputStream?_C#_Wcf_Httprequest - Fatal编程技术网

C# 我应该如何使用HttpRequest.GetBufferlessInputStream?

C# 我应该如何使用HttpRequest.GetBufferlessInputStream?,c#,wcf,httprequest,C#,Wcf,Httprequest,我在WCF服务中接收post数据时遇到问题。如果我尝试使用InputStream,我会得到一个异常。“调用HttpRequest.GetBufferlessInputStream后不支持此方法或属性” 我相信我理解为什么会抛出这个错误,但我还没有成功地绕过它。有一篇关于这个问题的现有文章指出了一些解决方法- 我使用的是.NET4.5,所以我遵循了帖子中建议的解决方案,但没有效果。尝试访问InputStream时仍会出错 如果我知道如何正确处理无缓冲输入流,这对我来说并不是什么问题。当我查看流的长

我在WCF服务中接收post数据时遇到问题。如果我尝试使用InputStream,我会得到一个异常。“调用HttpRequest.GetBufferlessInputStream后不支持此方法或属性”

我相信我理解为什么会抛出这个错误,但我还没有成功地绕过它。有一篇关于这个问题的现有文章指出了一些解决方法-

我使用的是.NET4.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;
            }


如果您使用的是.NET 4.5.1,则可以创建一个HttpModule(请参阅)或添加一个简单的配置参数:

<configuration>   
  <appSettings>
    <add key="wcf:serviceHostingEnvironment:useClassicReadEntityBodyMode" value="true" />
  </appSettings>
</configuration>

博客链接为404ing(新链接:),但添加此参数对我有效。谢谢!我更新了链接
<configuration>   
  <appSettings>
    <add key="wcf:serviceHostingEnvironment:useClassicReadEntityBodyMode" value="true" />
  </appSettings>
</configuration>