如何在没有try-catch的情况下检测WCF连接?

Jad*_*ias 1 .net wcf http named-pipes isoneway

我使用WCF netNamedPipeBindingwsHttpBinding.我想知道单向方法是否可以在没有try它的情况下成功执行.

编辑正如有人所指出的那样,连贯性可以在给定的时刻成功,并且在下一次失败时.我不在乎.我只是想知道WCF是否有替代方案try.有没有办法检查服务是否已启动且可以访问?

Vul*_*ary 5

对于我的知识,确定单向方法是否成功执行的唯一方法是它是否生成异常.

如果该方法不必是单向方法,则可以返回一个布尔值,该值指出方法是否失败或成功.

我可能会问你为什么要这样做?如果没有在方法上捕获异常,则在发生异常时无法判断错误情况.

如果我误解了你对"尝试"它的使用而你的意思是没有实际执行该方法,你可以为不实际提交动作的方法编写代理,只进行处理步骤.

如果您出于完全测试目的而这样做,我建议您利用Visual Studio单元测试或将项目连接到NUnit.

如果上述一点没有回答您的问题,请提供您要完成的更多详细信息.

编辑:修改以说明提问者的澄清.

using(YourService svc = new YourService()){
    if(svc.State.Equals(!CommunicationState.Opened)){ /*Handle Error*/ } 
    svc.InnerChannel.Faulted += new EventHandler(YourFaultedEventHander); 
}
Run Code Online (Sandbox Code Playgroud)

将覆盖您以查看连接当前是否已打开并将在服务进入故障状态时通知您.这将先发制人地告诉您呼叫是否会成功.但是,仍然存在可能导致特定方法失败的情况.这只会在您成功调用服务方法时通知您.