2010-01-04 62 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