【发布时间】:2012-12-11 16:48:46
【问题描述】:
只是想问是否有人在 Fiddler 启动时尝试将某些文件上传到服务器时遇到使用 HttpWebRequest 类(甚至是新的 HttpClient)的问题。
我遇到了一个bug,即HttpWebRequest类的AllowWriteStreamBuffering属性在fiddler启动时不起作用,所以上传进度根本不起作用。即使我将 AllowWriteStreamBuffering 设置为 true,字节也不会立即发送而是缓冲,因此我无法跟踪上传进度。在 fiddler 没有启动的情况下可以正常工作。
此外,如果我在我的应用程序上传某些文件时关闭 fiddler,它也会崩溃并抛出 WebException,上面写着“底层连接已关闭:接收时发生意外错误。”
新的 .net 4.5 HttpClient 类也发生了同样的事情。
【问题讨论】:
-
Fiddler 充当服务器和客户端之间的代理。因此,当您访问您的服务器时,它会通过 fiddler 作为代理服务器。如果您在中途关闭提琴手,则连接将关闭,因此您的最后一个问题。不确定 AllowWriteStreamBuffering 问题。我想提琴手不会将其转发到服务器上,反之亦然。
-
我的猜测是 AllowWriteStreamBuffering 不是标准 HTTP。它可能是 Microsoft 唯一的实现,所以 Fiddler 显然没有用它做任何事情。你能在 Fiddler 中看到的 HTTP 响应请求中看到它吗?可能在 HTTP 标头中?
-
没有额外的标题,AllowWriteStreamBuffering 属性阻止缓冲,所以我可以例如通过立即写入请求流来发送字节,而不在 HttpWebBrowser 缓存中缓冲这些字节,但提琴手使此属性不起作用
-
我花了很长时间尝试进行上传进度跟踪,但直到我关闭了 fiddler 才成功
-
贴了一些我发现的点点滴滴,不是这方面的专家,但也许会有帮助?
标签: c# .net httpwebrequest fiddler