C# 我应该如何使用HttpRequest.GetBufferlessInputStream?
我在WCF服务中接收post数据时遇到问题。如果我尝试使用InputStream,我会得到一个异常。“调用HttpRequest.GetBufferlessInputStream后不支持此方法或属性” 我相信我理解为什么会抛出这个错误,但我还没有成功地绕过它。有一篇关于这个问题的现有文章指出了一些解决方法- 我使用的是.NET4.5,所以我遵循了帖子中建议的解决方案,但没有效果。尝试访问InputStream时仍会出错 如果我知道如何正确处理无缓冲输入流,这对我来说并不是什么问题。当我查看流的长度时,它似乎包含我发送的数据,但当我使用StreamReader读取它时,它总是不返回任何内容。如果我只调用Stream.Read(),它看起来总是空的 我的理解是,出于可伸缩性的原因,缓冲输入被无缓冲输入取代,但这似乎有些不直观。有人知道如何正确处理无缓冲输入吗?你能举个例子吗 我尝试了两种方法:C# 我应该如何使用HttpRequest.GetBufferlessInputStream?,c#,wcf,httprequest,C#,Wcf,Httprequest,我在WCF服务中接收post数据时遇到问题。如果我尝试使用InputStream,我会得到一个异常。“调用HttpRequest.GetBufferlessInputStream后不支持此方法或属性” 我相信我理解为什么会抛出这个错误,但我还没有成功地绕过它。有一篇关于这个问题的现有文章指出了一些解决方法- 我使用的是.NET4.5,所以我遵循了帖子中建议的解决方案,但没有效果。尝试访问InputStream时仍会出错 如果我知道如何正确处理无缓冲输入流,这对我来说并不是什么问题。当我查看流的长
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>