问题在VB6调试模式下托管WCF服务 - 无法打开其IChannelListener

时间:2011-08-09 03:44:05

标签: wcf vb6

所以我有一个通过COM托管在VB6应用程序中的WCF服务。我遇到的问题是当您调试VB6应用程序时,应用程序是在VB6.exe进程下启动的,而不是像Visual Studio这样的单独进程。如果我通过在调试器中点击停止来终止应用程序或者有一个例外,那么下次我运行应用程序时它会尝试再次启动wcf主机我得到此错误

“http:// localhost:8080 / basic”中的ChannelDispatcher与合同“IEvalService”无法打开其IChannelListener。

我知道这是因为在这些情况下没有调用ServiceHost.Abort或ServiceHost.Close。当我正常关闭应用程序时,我会调用它,下次它会正常工作。我可以修复它的唯一方法是重启VB。

有没有办法可以检查服务主机是否正在运行,中止它然后再启动它?

1 个答案:

答案 0 :(得分:0)

至于应用程序因异常而崩溃:您可能需要考虑将主方法包装在try-catch中,并在出现异常时关闭服务。

就ChannelDispatcher错误而言,处理它的一种方法是将代码放在try-catch中并专门捕获此异常;在catch块中,在不同的端口下启动服务。