我有一个带有wsHttpBinding的WCF服务。一切都运行得很好,但我在我的客户端捕获故障时遇到问题,从我的自定义身份验证器发送
我使用来自msdn的自定义Authenticator代码:
https://msdn.microsoft.com/en-us/library/aa702565(v=vs.110).aspx
// This throws an informative fault to the client.
throw new FaultException("Unknown Username or Incorrect Password");
这条评论说我们向客户提出了一个信息错误,但我无法在客户端抓到它:
bool isReachable = false;
try {
isReachable = client.agentIsReachable();
}
catch(FaultException faultException){
MessageBox.Show(faultException.Message);
}
调试时我可以看到,抛出了一个错误,但我的客户端捕获代码不起作用。我的通信通道出现故障,但没有故障异常。然后我抓住一个.NET ex,说我正在尝试使用故障代理
当我从任何服务方法中抛出错误时,一切都很有效。我可以在我的客户上抓住它们。
是否真的有可能捕获Authenticator发送的错误。当身份验证失败时,将信息性消息传递给客户端的最佳方法是什么?
答案 0 :(得分:1)
客户端,您必须捕获的例外不是FaultException
,而是MessageSecurityException
(using System.ServiceModel.Security
)。
然后,您可以使用您捕获的FaultException
的{{1}}属性检索InnerException
。在你的情况下,你最终会得到类似的东西:
MessagSecurityException
我希望它会有所帮助。