2011-12-28 73 views

回答

7

故障合同,帮助定义从一个特定的服务期待什么类型的错误。在客户端,这允许应用程序根据故障类型捕获和管理条件。

例如(从here拍摄),你可以有几种类型的故障合同的服务:

[ServiceContract] 
interface ICalculator 
{ 
    [OperationContract] 
    [FaultContract(typeof(InvalidOperationException))] 
    [FaultContract(typeof(string))] 
    double Add(double number1,double number2); 

    [OperationContract] 
    [FaultContract(typeof(DivideByZeroException))] 
    double Divide(double number1,double number2); 
    //More methods 
} 

而在客户端,你就必须这样:

CalculatorClient proxy = new CalculatorClient(); 
try 
{ 
    proxy.Divide(2,0); 
    proxy.Close(); 
} 

catch(FaultException<DivideByZeroException> exception) 
{...} 

catch(CommunicationException exception) 
{...} 

希望这帮助。

+0

Garrett,谢谢。但是我通常需要了解更多的情况,比起只有一个错误合约,你可以拥有多个错误合约。 – Bond749 2011-12-28 22:20:55

+2

我认为这就是我所描述的。多个合同允许客户根据故障类型确定不同的操作。它也可以提供更多有关故障的信息。 – 2011-12-28 22:35:40