【问题标题】:HttpWebRequest and lost connectionHttpWebRequest 和失去连接
【发布时间】:2012-05-23 15:53:05
【问题描述】:

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

【问题讨论】:

  • 我可能有点眼花缭乱,但是当您调用 EndGetRequestStream 时,您不会收到解释流意外终止的异常吗?我不知道答案,但根据MSDN Docs 它确实会引发各种异常。
  • 它提示“底层连接已关闭:预期保持活动状态的连接已被服务器关闭。” EndGetResponse 异常。但据我了解,这并不表示消息未发送。

标签: c# .net httpwebrequest


【解决方案1】:

如果没有服务器的响应,就无法知道服务器接收和处理了什么。您需要在应用层处理此问题,并使用您确实收到其响应的另一个请求。

也就是说,您将检测到连接已丢失并且您没有收到响应,因此您的应用程序发送另一个请求,或者重复相同的请求(服务器必须适当处理)或发送查询“没有您收到并处理带有事务 ID XYZ 的请求?”。

【讨论】:

  • 感谢您的回答。我已经考虑过这种方法。我希望找到检测消息已发送(未收到)的方法。这将提供一个选项来决定是否需要就此消息联系服务器。
  • 我假设您成功调用了 EndGetRequestStream(),您向其中写入了一些数据并关闭了流。那时,您的数据就在“云”中。我有理由相信您不会找到一种方法来知道它是否已通过网络传输。
  • 它在 EndGetResponse 上引发异常。即使之前连接丢失,带有 Write 的 EndGetRequestStream 也不会产生任何异常......看起来没有办法做我想做的事。还是谢谢你。
猜你喜欢
  • 2013-05-20
  • 1970-01-01
  • 2015-09-20
  • 2013-05-07
  • 2023-01-23
  • 2014-02-28
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多