Всем привет!
Есть WCDL от стороннего сервиса, в которой в частности, прописано примерно следующее:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(Namespace="OtherNamespace", ConfigurationName="OtherNamespace.IOtherInterface")]
public interface IIOtherInterface {
[System.ServiceModel.OperationContractAttribute(Action="OtherNamespace/OtherOperation", ReplyAction="OtherNamespace/OtherOperation/OtherResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(OtherNamespace.OtherFault), Action="OtherNamespace/IOtherInterface/OtherOperationOtherFault", Name="OtherFault", Namespace="OtherNamespace.Interface")]
OtherNamespace.OtherResponse OtherOperation(OtherNamespace.OtherRequestRequest request);
Т.е., как бы намекается, что при ошибке сервис сгенерирует и вернет исключение типа FaultException<OtherNamespace.OtherFault>
При ошибочном запросе сервис вроде возвращает то, что нужно (это видно через Fiddler) с ошибкой 500
Но на клиенте этот момент не перехватывается
try
myClient.OtherOperation(otherRequest)
catch(Exception ex)
{
// анализ exception
// возвращается всегда ObjectDisposedException ("доступ к закрытому потоку невозможен") (видимо, при попытке сериализации)
// и все
}
Под отладчиком через AppDomain.CurrentDomain.FirstChanceException можно перехватыватить WebException 2 раза, но в исполняемом коде сделать это не получается (видимо, гасится где-то внутри)
Что у меня может быть не так?
И как перехватывать ошибку 500?
Спасибо...