Un exception en WCF est définie grâce à une FaultException contenant un "Object DataContractSerializable".

Cet object est la raison de votre exception, sa cause.

Prenons comme exemple un simple login(string nom, string mdp);

  1. Il nous faut premièrement définir l' "Object DataContractSerializable" que nous allons utiliser pour expliquer au client pourquoi la fonction ne peut pas se dérouler avec succes:
    [code:c#]
    namespace myWCFService
    {
        [DataContract]
        public class myWCFServiceFault
        {
            private string _msg;
  2.         [DataMember]
            public string Msg
            {
                get { return _msg; }
                set { _msg = value; }
            }

            public myWCFServiceFault(string m)
            {
                this._msg = m;
            }
        }
    }

    [/code}

  3. Ensuite, il va nous falloir signaler au client que cette fonction peut éventuellement lancer une FaultException contenant une raison de type myWCFServiceFault.
    Ceci se définit dans l'interface de notre service :
    [code:c#]
    namespace myWCFService
    {
  4.      [ServiceContract(SessionMode=SessionMode.Required)]
         public interface ImyWCFService    
         {     

             [OperationContract]
             [FaultContract(typeof(myWCFServiceFault))]
             void Login(string Login, string Mdp);
         }
    }
    [/code}

  5. Dans l'implémentation de ce web service, il nous suffit alors de lancer inocament une FaultException, elle sera envoyée au client :
    [code:c#]
    namespace myWCFService
    {
        public class myService: ImyWCFService
        {
            public void Login(string login, string Mdp)
            {
                if(login == "")
                    throw new FaultException<myWCFServiceFault>(new myWCFServiceFault("login ne peut pas être vide!"));
            }
        }
    }
    [/code]