重新连接到Web服务?

时间:2010-08-23 19:59:56

标签: c# web-services

我正在使用C#编写一个使用来自http://msrmaps.com的Web服务的程序,问题有时(看似随机)网站无法正常工作,并会返回一些不同的例外情况。然后在随后尝试使用该服务时,我反复得到错误,然后一段时间(有时30分钟)后服务再次开始正常工作。为了避免等待服务再次正常工作,我通常只是关闭我的程序并重新启动它。通常可以解决问题,我可以继续使用Web服务。

我的问题:是否有可能在程序中重新启动我的程序或者更好,但有没有办法以某种方式重新连接到Web服务,就像程序在我第一次运行时那样?

3 个答案:

答案 0 :(得分:3)

实际执行的程序取决于Web服务?它真的需要重新启动吗?听起来你应该能够在应用程序中只有一些尝试连接到服务的UI元素。在某些异常处理中以及应用程序UI中的某处显示该连接显示服务连接当前不可用。

还是我离开这里?

答案 1 :(得分:0)

警告:这有点像黑客,但它确实有效。

我假设您的应用程序无人值守,因此UI更改警告用户需要关闭并重新启动不是一种选择。

我们遇到类似情况,解决问题的最简单方法是关闭并重启我的应用。 (我们称之为“App A”)。

我最后做的是编写第二个可执行文件(我们称之为“应用程序B”)作为控制台应用程序执行两项操作。

  1. 它使用System.Diagnostics.Process来终止任何实例App A.
  2. 使用System.Diagnostics.Process在所有实例被杀死后重新启动App A.
  3. 然后在应用程序A中,我对违规代码进行了尝试/捕获,当我找到的错误出现时,它会调用App B.

    这是我找到杀死程序并重新启动程序的唯一方法。如果有人有更好的解决方案,请发布它,我会改变我的黑客以使用更好的解决方案。

答案 2 :(得分:0)

我会检查你没有同时发生太多同时请求,因为每次请求都会在返回之前等待很长时间(相关地,根据machine.config的总允许连接数足够高)。对无人参与的web服务(或任何其他远程服务)使用限制代码非常有用,如果你连续发生了一些故障然后等待一段时间再允许另一个请求(我想推进每次等待一段时间,大约一分钟开始,等待大约10分钟。

然后,当您无法保证其他服务不会停止时,您可以帮助防止它导致永久性问题,或降低其他进程的性能。