Specifying and handling faults in WCF
ms-help://MS.MSSDK.1033/MS.NETFX30SDK.1033/WCF_con/html/a9696563-d404-4905-942d-1e0834c26dea.htm
In this article, it is discussed how and when to convert DotNet exceptions to WCF faults and sent them to the clients. The folowing main contents included:
- Error handling overview
- Defining and specifying faults
namespace
Microsoft.WCF.Documentation
{
[ServiceContract(Namespace = " http://microsoft.wcf.documentation " )]
public interface ISampleService{
[OperationContract]
[FaultContractAttribute(
typeof (GreetingFault),
Action = " http://www.contoso.com/GreetingFault " ,
ProtectionLevel = ProtectionLevel.EncryptAndSign
)]
string SampleMethod( string msg);
}
[DataContractAttribute]
public class GreetingFault
{
private string report;
public GreetingFault( string message)
{
this .report = message;
}
[DataMemberAttribute]
public string Message
{
get { return this .report; }
set { this .report = value; }
}
}
class SampleService : ISampleService
{
#region ISampleService Members
public string SampleMethod( string msg)
{
Console.WriteLine( " Client said: " + msg);
// Generate intermittent error behavior.
Random rand = new Random(DateTime.Now.Millisecond);
int test = rand.Next( 5 );
if (test % 2 != 0 )
return " The service greets you: " + msg;
else
throw new FaultException < GreetingFault > ( new GreetingFault( " A Greeting error occurred. You said: " + msg));
}
#endregion
}
}
{
[ServiceContract(Namespace = " http://microsoft.wcf.documentation " )]
public interface ISampleService{
[OperationContract]
[FaultContractAttribute(
typeof (GreetingFault),
Action = " http://www.contoso.com/GreetingFault " ,
ProtectionLevel = ProtectionLevel.EncryptAndSign
)]
string SampleMethod( string msg);
}
[DataContractAttribute]
public class GreetingFault
{
private string report;
public GreetingFault( string message)
{
this .report = message;
}
[DataMemberAttribute]
public string Message
{
get { return this .report; }
set { this .report = value; }
}
}
class SampleService : ISampleService
{
#region ISampleService Members
public string SampleMethod( string msg)
{
Console.WriteLine( " Client said: " + msg);
// Generate intermittent error behavior.
Random rand = new Random(DateTime.Now.Millisecond);
int test = rand.Next( 5 );
if (test % 2 != 0 )
return " The service greets you: " + msg;
else
throw new FaultException < GreetingFault > ( new GreetingFault( " A Greeting error occurred. You said: " + msg));
}
#endregion
}
}