2011-12-28 67 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