2012-05-23 50 views
0

我使用HttpWebRequest.BeginGetRequestStream进行POST请求到远程服务器。假设在此过程中网络连接丢失,并且未收到响应。有什么方法可以检测请求是否发送到远程服务器?谢谢!HttpWebRequest和连接丢失

+0

我可能是昏暗的,但你不会收到异常解释,当你调用_EndGetRequestStream_意外终止流?我不知道这个问题的答案,但根据[MSDN文档(http://msdn.microsoft.com/en-us/library/7de1x8cb)它抛出的各种异常。 – Smudge202

+0

它显示“底层连接已关闭:预计将保持连接状态的连接已被服务器关闭。” EndGetResponse异常。但据我所知,这并不表示该消息未被发送。 –

回答

0

有没有办法知道收到的服务器和处理,而不从它的一些反应。您需要在应用程序层处理此问题,并请求您收到的其他请求。

也就是说,你将检测到连接已丢失,您没有收到回复,因此您的应用程序发送另一个请求,要么重复同样的要求(该服务器必须妥善处理),或将查询发送“您是否收到并使用交易ID XYZ处理该请求?“。

+0

谢谢你的回答。我想过这种方法。我希望找到检测邮件发送(未收到)的方式。这将提供一个选项来决定是否需要联系有关此消息的服务器。 –

+0

我假设你不得不EndGetRequestStream()调用成功,你写了一些数据,并关闭了流。那时,你的数据就在“云端”。我相当肯定你不会找到一种方法来知道它是否通过网络传输。 –

+0

它在EndGetResponse上引发异常。 EndGetRequestStream与Write不会产生任何异常,即使连接丢失之前......看起来没有办法做我想做的事。无论如何,谢谢你。 –