我有一个小程序,可以将一些数据(4MB)发布到远程服务器。每次内部4MB缓冲区已满时,我会创建一个新的HttpWebRequest
,调用BeginGetRequestStream
/ EndGetRequestStream
,将数据写入流,关闭并完成。因为我不关心回复,所以我没有打电话给GetResponse
/ BeginGetResponse
/ EndGetResponse
。
我的问题是,由于HttpWebRequest
没有Close
方法,将当前的HttpWebRequest
实例放在后面是否安全?如果我没有对HttpWebRequest
做任何事情,连接会自动关闭吗?如果答案为否,如何显式关闭当前的HTTP连接?感谢。
答案 0 :(得分:1)
您不必清理HttpWebRequest
,但需要关闭来自GetRequestStream
的流或来自GetResponse
的回复。我知道你说你没有使用任何响应方法,但你必须使用其中一个来实际提出请求。
完成WebResponse对象后,必须通过调用Close方法将其关闭。或者,如果您已从响应对象获得响应流,则可以通过调用Stream.Close方法来关闭该流。如果不关闭响应或流,则应用程序可能会耗尽与服务器的连接,并且无法处理其他请求。[1]