FaultException y excepción personalizada WCF

Tengo una pregunta sobre cómo enviar una excepción personalizada como FaultException. Funciona cuando uso una excepción del sistema como ArgumentException, pero si la cambio a mi excepción personalizada "TestException" falla. No puedo obtener la configuración de la referencia de servicio cuando intento agregarla.

Trabajos

[OperationContract]
[FaultContract(typeof(ArgumentException))]
[TransportChannel TestMethod ();


public Void TestMethod()
{
            throw new FaultException<ArgumentException>(new ArgumentException("test"), new FaultReason("test"));
}

No funciona:

[OperationContract]
[FaultContract(typeof(TestException))]
[TransportChannel TestMethod ();


public Void TestMethod()
{
            throw new FaultException<TestException>(new TestException("test"), new FaultReason("test"));
}

Mi "TestException" se ve así:

[Serializable()]
public class TestException: Exception
{
    public TestException () : base() { }
    public TestException (string message) : base(message) { }
    public TestException (string message, Exception innerException) : base(message, innerException) { }
    public TestException (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context) { }
}

Supongo que tengo que agregar un DataContract en el objeto personalizado, pero no entiendo por qué no funcionará como es, ya que ArgumentException funciona. ¿Alguien puede iluminarme?

Gracias por la ayuda :

Respuestas a la pregunta(2)

Su respuesta a la pregunta