Нет "автоматического преобразования".WCF вернет ошибку (я забыл какую), когда у вас есть необработанное исключение.Но так как вы не заявили об этой ошибке, многие, если не большинство, потерпят неудачу, если вы ее вернете.
Вы должны определить свои собственные ошибки и вместо них вернуть их.Обратите внимание:
[DataContract]
public class MySpecialFault
{
public string MyMessage { get; set; }
}
[ServiceContract]
public interface IMyService
{
[FaultContract(typeof (MySpecialFault))]
[OperationContract]
void MyOperation();
}
public class MyService : IMyService
{
public void MyOperation()
{
try
{
// Do something interesting
}
catch (SomeExpectedException ex)
{
throw new FaultException<MySpecialFault>(
new MySpecialFault {MyMessage = String.Format("Sorry, but {0}", ex.Message)});
}
}
}
Любой клиент, способный обрабатывать ошибки, будет иметь дело с этим.WSDL определит ошибку и увидит ошибку с элементом Detail, содержащим сериализованную версию отправленного экземпляра MySpecialFault.Они смогут прочитать все свойства этого экземпляра.