Normally, by default, when some exception occurs at a WCF service level, it will not expose as it is to client. Reason is that WCF exception is a CLR exception and it doesn’t make sense to expose it outside CLR because it contains internal details of service code like stack trace. So, WCF handles and returns error details to client using Fault Contract.“So, fault contract is a contract that contains the details of possible exception(s) that might occur in a service code.”
[ServiceContract]
public interface IService1
{
[OperationContract]
[FaultContract(typeof(MyFaultDetails))]
int MyOperation1();
}
public interface IService1
{
[OperationContract]
[FaultContract(typeof(MyFaultDetails))]
int MyOperation1();
}
[DataContract]
public class MyFaultDetails
{
[DataMember]
public string ErrorDetails { get; set; }
}
public class MyFaultDetails
{
[DataMember]
public string ErrorDetails { get; set; }
}
In implementing service…..
public int MyOperation1()
{
Try{ //Do something…… }catch()
{
MyFaultDetails ex = new MyFaultDetails();
ex.ErrorDetails = “Specific error details here.“;
throw new FaultException(ex,“Reason: Testing…..“);
}
}
{
Try{ //Do something…… }catch()
{
MyFaultDetails ex = new MyFaultDetails();
ex.ErrorDetails = “Specific error details here.“;
throw new FaultException(ex,“Reason: Testing…..“);
}
}