Привет У меня проблемы с обработкой исключений в wcf. У меня есть сервис, как этот:Обработка исключений из Wcf выдает ошибку
[ServiceContract]
public interface IAddressService
{
[OperationContract]
[FaultContract(typeof(ExecuteCommandException))]
int SavePerson(string idApp, int idUser, Person person);
}
Я звоню SavePerson() на службе в утилите WCFTestClient. SavePerson() реализация:
public int SavePerson(string idApp, int idUser, Person person)
{
try
{
this._savePersonCommand.Person = person;
this.ExecuteCommand(idUser, idApp, this._savePersonCommand);
return this._savePersonCommand.Person.Id;
}
catch (ExecuteCommandException ex)
{
throw new FaultException<ExecuteCommandException>(ex, new FaultReason("Error in 'SavePerson'"));
}
}
Но я получаю эту ошибку:
Failed to invoke the service. Possible causes: The service is offline or inaccessible; the client-side configuration does not match the proxy; the existing proxy is invalid. Refer to the stack trace for more detail. You can try to recover by starting a new proxy, restoring to default configuration, or refreshing the service.
если изменить метод SavePerson и вместо:
catch (ExecuteCommandException ex)
{
throw new FaultException<ExecuteCommandException>(ex, new FaultReason("Error in 'SavePerson'"));
}
Я
catch(Exception)
{
throw;
}
Я не получаю вышеуказанную ошибку, но я получаю сообщение об исключении и внутреннее исключение. Что я делаю неправильно?
ли ExecuteCommandException сериализации? –
ExecuteCommandException наследует от Exception и помечен сериализуемым. Я обнаружил, что если я отправляю исключение, ошибка выше. И обнаружил, что когда исключение выбрасывается со стороны сервера, wcf закрывает канал и отключает клиент. – Luka