FaultException和Details

时间:2012-12-10 09:50:02

标签: wcf

我正在使用几天的WCF服务。我写了一个带有异常的服务

public String Login(string Vendorname, string VendorAccessCode)
    {        
        try
        {
        if()
        {
        }
        else
        {
            UserIdentityToken = string.Empty;
            this.ErrorMessage = "Authentication failed. Please contact administrator";
            throw new FaultException(this.ErrorMessage);
        }

        }
        catch (FaultException ex)
        {
           logger.Error(ex.Message); 
        }
        catch (Exception ex)
        {
            logger.Error(ex.Message); 
        }

        return UserIdentityToken;
    }

在此之后我在Messgae Inspector中处理客户端的异常

      public class MessageInspector : IClientMessageInspector
     {


    public void AfterReceiveReply(ref Message reply, object correlationState)
    {
        if (reply.IsFault)
        {

            MessageFault fault = MessageFault.CreateFault(new FaultCode("Receiver"), new FaultReason(reply.ToString()));
            throw new FaultException(fault);
        }
    }
   }

我正在处理我的客户端代码

            try
            {                                objVendorServiceClient.Login(txtuserName.Text.Trim(),
txtAccessCode.Text.Trim());               
            }
            catch (FaultException ex)
            {                
                lblAuthenticationMessage.Text = ex.Message;                
                throw ex;
            }

但是当Service中的身份验证失败时,Reply.IsFault仅返回false。任何人都可以向我解释什么是回复。这个错误以及它对我有多大帮助?

1 个答案:

答案 0 :(得分:0)

  

Message.IsFault Property

     

获取一个值,该值指示此消息是否生成任何SOAP错误。

你说:

  

当Service中的身份验证失败时,Reply.IsFault返回false

这是因为你自己捕获了错误,记录它,然后返回一个空字符串。您必须抛出FaultException,以便WCF捕获它并从中创建SOAP错误。