Сначала вам нужно создать класс DataContract для вашей пользовательской ошибки. Похоже, в вашем случае, как минимум, этот класс будет иметь свойство Error Code и свойство Description. Далее, в вашем контракте на обслуживание вам нужно оформить любые сервисные операции, которые могут вызвать эту ошибку, с помощью атрибута FaultContract. Например:
[OperationContract()]
[FaultContract(typeof(MyCustomFault))]
ResponseDataContract SomeServiceOperation(RequestDataContract request);
Наконец, в реализации вашей службы вам нужно выбросить пользовательскую ошибку как FaultExcepton. Например:
try
{
DoStuff();
}
catch (Exception e)
{
throw new FaultException<MyCustomFault>(new MyCustomFault
{
Description = "Oh No!",
ErrorCode = 1234
});
}