Если вы передаете ошибки клиенту, вы можете использовать Fault Contract:
Добавьте этот атрибут в контракт на обслуживание:
[OperationContract]
[FaultContract(typeof(MyCustomException))]
void MyServiceMethod();
Создайте класс для «MyCustomException», содержащий именно ту информацию, которую вы хотите передать клиенту (в этом случае полные сведения об исключении из исключения. ToString ()).
Затем добавьте try / catch вокруг кода в реализации вашего метода обслуживания:
public void MyServiceMethod()
{
try
{
// Your code here
}
catch(Exception e)
{
MyCustomException exception= new MyCustomException(e.ToString());
throw new FaultException<MyCustomException>(exception);
}
}
На стороне клиента вы можете поставить try / catch (FaultException e) и отобразить детали, как вам нравится.
try
{
// your call here
}
catch (FaultException<MyCustomException> faultException)
{
// general message displayed to user here
MessageBox.Show((faultException.Detail as MyCustomException).Details);
}
catch (Exception)
{
// display generic message to the user here
MessageBox.Show("There was a problem connecting to the server");
}