2010-01-04 105 views
3

我嘗試了超時並在服務實現中拋出異常,但它並未導致通道進入故障狀態,因爲它發生在我的生產代碼中。如何使WCF服務通道進入故障狀態?

我該如何強制這個事件發生用於測試目的?

下面的代碼拋出了第一個請求例外,使它失敗,但後續請求成功(遺憾的是,因爲我的目標是讓他們失敗)

public class SampleService : ISampleService 
{ 
    static bool first = true; 

    SampleData ISampleService.SampleMethod(SampleData data) 
    { 
     if (first) 
     { 
      first = false; 
      throw new Exception(); 
     } 
     return data; 
    } 
} 

回答

0

在您的服務器提高了uncatched例外會把你的Chanel置於故障狀態,除非它是FaultException; (感謝marc_s!)

+1

實際上,這不會起作用 - 使用FaultContracts或SOAP故障專門設計爲** NOT **將您的通道置於故障模式! – 2010-01-04 15:55:12

+0

你是對的,實際上它恰恰相反 – Brann 2010-01-04 16:38:38

+0

我的例外不起作用,因爲我在新的請求之前丟棄了錯誤的頻道。 – 2010-01-04 17:36:44