WCF Faults
servilize exception
By default, exception details are not shared with clients applications and general SOAP fault is returned
Debugging Behavior: "IncludeExceptionDetailsInFaults"
e.g.:
<behaviors>
<serviceBehaviors>
<behavior>
<serivceDebug IncludeExceptionDetailsInFaults="true"/>
OR
[ServiceBehaviorAttribute(IncludeExceptionDetailsInFaults=true]
[ublic class Service:IService
Uncatch Exception
:indicate to the service model a potentially fatal error
,will cause server channel terminate, then client proxy has to been re-create
Throwing Faults, but not kill the server channel,not lose session;
Type
FaultException
e.g.:
throw new FaultException("An invalid operation has occurred.");
throw new FaultException(new FaultReason(""));
...
FaultException<T>
e.g.:
throw new FaultException<InvalidOperationException>(new
InvalidOperationException("xxx"),"Invalid operation",
...
"Custom Fault"
[DataContact(Namespace=""
public class SenderFault
{
private string m_message
private string m_description
...
public interface IphotoUpload
{
[OperationContract]
[FaultContract(typeof(SenderFault))]
void UploadPhoto...
MessageFault
**Basic Http Binding does not have session
**Channel Die then session die the client proxy die, need to restart
By default, clients are unaware of POSSIBLE faults operations can throw
Declare Faults will helps client to understand what are the potential errors in the system when they generate client proxy.
e.g.:
[OperationContract]
[FaultContract(typeof(SenderFault))]
[FaultContract(typeof(ReciverFault))]
void UploadPhoto...