Если вы хотите иметь интероперабельную и «нестандартную» услугу, вы должны всегда возвращать FaultException<T>
ошибки SOAP от вашего сервиса к клиенту.
Так как этот тип принимает общий <T>
, вы можете поместить в него что угодно, чтобы сообщить о своих ошибках. Этот тип должен быть украшен [DataContract], а его члены должны быть возвращены с атрибутами [DataMember].
[DataContract]
public class MyErrorInfo
{
[DataMember]
public int ErrorCode { get; set; }
[DataMember]
public string ErrorMessage { get; set; }
}
Когда вы перехватываете эти исключения на стороне службы и возвращаете FaultException<MyErrorInfo>
(или что бы то ни было, вы в конечном итоге вызываете свой класс ошибок), вам также нужно украсить свои операции с помощью
[FaultContract(typeof(MyErrorInfo))]
[OperationContract]
public SomeType SomeMethodCall(SomeType parameter);
чтобы ваши клиенты могли поймать FaultException<MyErrorInfo>
и обработать его.