2016-02-29 91 views
0

我有一个自定义WebUploadTraceListener : TraceListener,我用它来发送HTTP(并最终HTTPS)POST数据到一个Web服务,将它写入数据库。使HttpWebRequest忽略响应

我已经测试了WebClientHttpWebRequest这个做法,经验上我看到后者有更好的表现。

由于数据的单向性,我不关心服务器的响应。但是我发现如果我不处理HttpWebResponse,我的代码在第三次写入时锁定。我想,这是因为DefaultConnectionLimit设置,而不是重复使用资源的系统...

Jon Skeet

请注意,你需要处理由request.GetResponse返回WebResponse类的 - 否则根本基础设施不会知道你已经完成了它,并且将无法重新使用连接。

我想最大限度地发送POST数据的速度,回到主程序尽可能快流越好。由于我正在跟踪程序流,所以同步写入更可取,但不是必需的,因为我总是可以添加包括Tick计数的POST字段。

  1. 是一个HttpWebRequeststream.Write.Net4.0这样做的最快方法是什么?
  2. 是否有更便宜的方法来丢弃不需要的响应?

回答

1

Attually,httpRequest.GetResponse只发布的数据服务器,并没有任何东西下载到客户端,除了信息告诉客户请求是否成功服务器处理。

当您拨打GetResponseStream时,您只能得到响应数据。如果即使是关于您不希望收到的请求成功/错误的信息,您也无法确定服务器是否成功处理请求。

所以答案是:

  1. 是的,这是对托管代码的最低水平,除非你想搞砸 与插座(你应该)
  2. 随着HttpWebRequest,没有。你几乎没有得到任何你不想要的数据 。
+0

谢谢:-)不,我不想在socket级别工作。我需要调用'GetResponse'来关闭/重用连接是否正确? – khargoosh

+0

是的,你说得对。在你的代码中,'GetResponse()'是自动关闭的,因为你将它封装在'using'中。 – Sakura

+1

这是我'使用'它的意图。再次感谢 :-) – khargoosh