我正在使用C#编写一个使用来自http://msrmaps.com的Web服务的程序,问题有时(看似随机)网站无法正常工作,并会返回一些不同的例外情况。然后在随后尝试使用该服务时,我反复得到错误,然后一段时间(有时30分钟)后服务再次开始正常工作。为了避免等待服务再次正常工作,我通常只是关闭我的程序并重新启动它。通常可以解决问题,我可以继续使用Web服务。
我的问题:是否有可能在程序中重新启动我的程序或者更好,但有没有办法以某种方式重新连接到Web服务,就像程序在我第一次运行时那样?
答案 0 :(得分:3)
实际执行的程序取决于Web服务?它真的需要重新启动吗?听起来你应该能够在应用程序中只有一些尝试连接到服务的UI元素。在某些异常处理中以及应用程序UI中的某处显示该连接显示服务连接当前不可用。
还是我离开这里?
答案 1 :(得分:0)
警告:这有点像黑客,但它确实有效。
我假设您的应用程序无人值守,因此UI更改警告用户需要关闭并重新启动不是一种选择。
我们遇到类似情况,解决问题的最简单方法是关闭并重启我的应用。 (我们称之为“App A”)。
我最后做的是编写第二个可执行文件(我们称之为“应用程序B”)作为控制台应用程序执行两项操作。
然后在应用程序A中,我对违规代码进行了尝试/捕获,当我找到的错误出现时,它会调用App B.
这是我找到杀死程序并重新启动程序的唯一方法。如果有人有更好的解决方案,请发布它,我会改变我的黑客以使用更好的解决方案。
答案 2 :(得分:0)
我会检查你没有同时发生太多同时请求,因为每次请求都会在返回之前等待很长时间(相关地,根据machine.config的总允许连接数足够高)。对无人参与的web服务(或任何其他远程服务)使用限制代码非常有用,如果你连续发生了一些故障然后等待一段时间再允许另一个请求(我想推进每次等待一段时间,大约一分钟开始,等待大约10分钟。
然后,当您无法保证其他服务不会停止时,您可以帮助防止它导致永久性问题,或降低其他进程的性能。