wsHttpBinding,从自定义UserNamePasswordValidator捕获FaultException



我有一个带有wsHttpBinding的WCF服务。一切都很好,但我在捕捉客户端上的错误时遇到了问题,这些错误是从我的自定义身份验证程序发送的
我使用来自msdn的自定义身份验证程序代码:
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发送的错误。当身份验证失败时,向客户端传递信息性消息的最佳方式是什么?

客户端,必须捕获的异常不是FaultException,而是MessageSecurityExceptionusing System.ServiceModel.Security)。

然后,您可以使用捕获的MessagSecurityExceptionInnerException属性检索您的FaultException。在你的情况下,你会得到类似的东西:

catch (MessageSecurityException e)
{
    FaultException fault = (FaultException) e.InnerException;
    MessageBox.Show(faultException.Message);
}

我希望这会有所帮助。

相关内容

  • 没有找到相关文章

最新更新