Fiddler使HttpWebRequest / HttpClient行为意外

时间:2012-12-11 16:48:46

标签: c# .net httpwebrequest fiddler

当想要在启动Fiddler时尝试将一些文件上传到服务器时,是否有人遇到过使用HttpWebRequest类(甚至是新的HttpClient)的问题。

我遇到了这个错误,即启动fiddler时 HttpWebRequest 类的 AllowWriteStreamBuffering 属性不起作用,因此上传进度根本不起作用。即使我将AllowWriteStreamBuffering设置为true,也不会立即发送字节但会缓冲,因此我无法跟踪上载进度。当fiddler没有启动时,它可以正常工作。

此外,如果我在我的应用程序上传某个文件时关闭fiddler,它也会崩溃,抛出WebException,其中显示“底层连接已关闭:接收上发生意外错误。”

新的.net 4.5 HttpClient 类正在发生同样的事情。

2 个答案:

答案 0 :(得分:3)

抱歉这个混乱; Fiddler目前仅支持响应而非请求的流式传输。

某些代理(如Fiddler)或其他中介将在将请求发送到服务器之前完全缓冲请求,以实现性能或功能(例如病毒扫描,断点调试)的原因。

http://www.fiddler2.com/fiddler/help/streaming.asp

答案 1 :(得分:2)

好的,引起我的兴趣,看来AllowWriteSteamBuffering工作服务器必须支持Chunked transfer encoding。这让我想到了关于代理和前面提到的分块编码的论坛帖子:https://groups.google.com/forum/?fromgroups=#!topic/httpfiddler/UkOiK96kg_k

从我在这里看到的内容看来,当使用代理时,您可能会或可能不会获得分块编码等因此您的问题。

我也发现这篇关于上传的详细文章似乎很有帮助,可能会有所帮助吗?

http://blogs.msdn.com/b/delay/archive/2009/09/08/when-framework-designers-outsmart-themselves-how-to-perform-streaming-http-uploads-with-net.aspx