所以我有一个通过COM托管在VB6应用程序中的WCF服务。我遇到的问题是当您调试VB6应用程序时,应用程序是在VB6.exe进程下启动的,而不是像Visual Studio这样的单独进程。如果我通过在调试器中点击停止来终止应用程序或者有一个例外,那么下次我运行应用程序时它会尝试再次启动wcf主机我得到此错误
“http:// localhost:8080 / basic”中的ChannelDispatcher与合同“IEvalService”无法打开其IChannelListener。
我知道这是因为在这些情况下没有调用ServiceHost.Abort或ServiceHost.Close。当我正常关闭应用程序时,我会调用它,下次它会正常工作。我可以修复它的唯一方法是重启VB。
有没有办法可以检查服务主机是否正在运行,中止它然后再启动它?
答案 0 :(得分:0)
至于应用程序因异常而崩溃:您可能需要考虑将主方法包装在try-catch中,并在出现异常时关闭服务。
就ChannelDispatcher错误而言,处理它的一种方法是将代码放在try-catch中并专门捕获此异常;在catch块中,在不同的端口下启动服务。